자바스크립트 코드를 body 태그 맨 밑에 두면, 무거운 스크립트 코드가 있다고 하더라도 html태그와 CSS가 모두 동작한 다음 불러오기 때문에 미완성된 화면이 오랫동안 지속되지 않습니다.
또한 문서의 DOM(Document Object Model)구조가 완료된 시점에서 실행되기 때문에 따로 추가 설정을 할 필요가 없어진다. 따라서 특별한 사유가 없는 경우에는 <script> 위치는 <body> 태그 맨 마지막에 선언하는 것입니다.
브라우저는 HTML을 읽다가 script 태그를 만나면 스크립트를 먼저 실행해야 하므로 DOM 생성을 멈춥니다.
이럴경우 브라우저의 동작 방식은 두 가지 중요한 이슈를 만듭니다.


스크립트에서는 스크립트 아래에 있는 DOM 요소에 접근할 수 없습니다. 따라서 DOM 요소에 핸들러를 추가하는 것과 같은 여러 행위가 불가능해집니다.
스크립트에서는 스크립트 아래에 있는 DOM 요소에 접근할 수 없습니다. 따라서 DOM 요소에 핸들러를 추가하는 것과 같은 여러 행위가 불가능해집니다.즉, 화면에 표시되는 것이 지연됩니다.
=> 이런 부작용들을 피하기 위해 스크립트를 페이지 맨 아래 놓는 것이 하나의 방법입니다.
이렇게 하면 스크립트 위에 있는 요소에 접근할 수 있습니다. 또한, 페이지 콘텐츠 출력을 막지 않게 됩니다.
<head> 안에 넣어도 된다.<script> 속성이 있습니다. 바로 defer와 async입니다.

async 속성은 <head>에 <script>를 async 속성과 함께 사용async 속성은 파싱과 JS 불러오기를 병렬적으로 진행

defer 속성은 async 속성과 마찬가지로 <head>에 <script>를 defer 속성과 함께 사용