<head> 안에 <script>가 있는 경우
단점 : js 파일이 사이즈가 크고 인터넷이 느리다면 사용자가 웹 사이트를 보는데 많은 시간이 소요된다.
<body> 안에 제일 끝 부분에<script>가 있는 경우
장점: 페이지가 준비된 후 스크립트를 만나서 실행 js를 받기전에 사용자가 빠르게 페이지 컨텐츠를 볼 수 있다.
단점: 웹사이트가 자바스크립트에 굉장히 의존적이라면 사용자가 의미있는 컨텐츠를 보기위해서 서버에서 자바스크립트를 받아오고 실행하는 시간을 기다려야 한다.
<script>에 async 사용하는 경우
장점: 바디끝에 사용하는것보다 다운받는 시간을 절약할 수 있다.
단점: 자바스크립트가 HTML이 parsing 되기전에 실행 되기 때문에 자바스크립트에서 조작하려는 시점에 html이 원하는 요소가 아직 정의되지 않을 수 있다. 자바스크립트를 실행하기 위해 멈출 수 있어서 사용자가 보기에 시간이 걸릴 수 있다.
<script>에 defer사용하는 경우
장점: pasing html동안 필요한 js 다운 다 받은 후 사용자에게 페이지를 보여준 후 js를 바로 실행 한다.
async 다수
먼저 다운된 js를 실행한다. 정의된 스크립트 순서에 상관없이 다운로드 된 것을 실행하기 때문에 js가 순서에 의존적인 것이라면 async를 사용한다면 문제가 생길 수 있다.
defer 다수
parsing 하는 동안 필요한 js를 다 다운 받은 후 순서대로 실행한다. 정의한 순서가 지켜지기 때문에 원하는대로 js가 실행되는것을 예상 할 수 있다.
<head> 안에 defer 옵션으로 사용하는 것이 효율적이며 안전하다.
순수 바닐라 자바스크립트를 사용 하는경우
'use strict '; 사용하는 것이 좋다.
굉장히 유연한 언어로 만들어졌다 >> 위험할 수 있다. >> 개발자가 많은 실수를 할 수 있다.
use strict를 선언하는 경우 더 이상 비상식적인 것을 쓸 수 없다.
자바스크립트 엔진이 효율적이고 빠르게 자바스크립트를 분석할 수 있다.
출처 :
https://www.youtube.com/watch?v=tJieVCgGzhs&t=240s