<head>
<script src="test.js"></script>
</head>
HTML parsing을 중간에 중단하고 js파일을 읽어온 후 다시 HTML을 parsing한다.
<head>
<script asyn src="test.js"></script>
</head>
HTML parsing과 fetching js가 병렬로 이루어진다. js파일 다운이 완료되면 HTML parsing을 중단하고 js파일을 실행시킨 뒤 남은 HTML을 parsing한다.
<head>
<script defer src="test.js"></script>
</head>
HTML parsing과 fetching js가 병렬 진행되며 HTML parsing완료 후에 js파일을 실행한다.
async와 defer
- async : HTML parsing과 js fetching이 병렬로 동시에 이루어짐. fetching이 완료되면 parsing을 중단하고 js실행함.
- defer : HTML parsing과 js fetching이 병렬로 동시에 이루어짐. parsing이 완료되면 js를 실행함.
<body>
<script src="test.js"></script>
</body>
HTML parsing이 완료된 후 js파일을 읽어온다.
<body>
<script>
window.addEventListener("DOMContentLoaded", () => {});
</script>
</body>
document 로드 후 호출
<body>
<script>
window.addEventListener("load", () => {});
</script>
</body>
resources(css, images) 로드 후 호출
<body>
<script>
window.addEventListener("beforeunload", () => {});
</script>
</body>
unload 전에 호출
<body>
<script>
window.addEventListener("unload", () => {});
</script>
</body>
resources가 전부 unload되었을 때 호출
참고자료
드림코딩 강의
모던 자바스크립트 튜토리얼 https://ko.javascript.info/script-async-defer