<!DOCTYPE html>
<html lang="en">
<head>
<script src="main.js"></script>
</head>
<body></body>
</html>
๐ html ๋ฌธ์ parsing์ค script ํ๊ทธ๋ฅผ ๋ง๋๋ฉด parsing์ ๋ฉ์ถ๊ณ script ํ๊ทธ์์ main.jsํ์ผ์ ๋ถ๋ฌ์ค๋ ์์ ์ ๋จผ์ ์คํํ๋ค. ์คํ์ด ์๋ฃ ๋ ํ์ html ๋ฌธ์๋ฅผ ๋ค์ parsing ํ๋ค. ๋ฐ๋ผ์ ์ฌ์ฉ์๊ฐ ์น์ฌ์ดํธ๋ฅผ ๋ณด๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด ๊ธธ์ด์ง ์ ์๊ณ main.js ํ์ผ์ ๋ก๋๋์์ง๋ง html์ ์์ง parsing ํ์ง ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์๋ค๋ ๋จ์ ์ด ์๋ค.
<!DOCTYPE html>
<html lang="en">
<head> </head>
<body>
<h1>Hello World!</h1>
<script src="main.js"></script>
</body>
</html>
๐ html ํ์ผ์ parsing์ด ์๋ฃ๋ ํ main.js๊ฐ ์คํ๋๊ธฐ ๋๋ฌธ์ jsํ์ผ์ด ๋จผ์ ๋ก๋๋์ด ๋ฐ์ํ๋ ๋ฌธ์ ์ ์ด ์๊ธฐ์ง ์๋๋ค.
๐ ํ์ง๋ง ๋๋ถ๋ถ์ ์น์ฌ์ดํธ์์๋ jsํ์ผ์ ์์กด๋๊ฐ ๋๊ธฐ ๋๋ฌธ์ ์ฌ์ ํ ์ฌ์ฉ์๊ฐ ๊ธฐ๋ค๋ ค์ผ๋๋ ์ํฉ์ด ๋ฐ์ํ ์ ์๋ค.
โจ ์ด๋ฌํ ๋ฌธ์ ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด์ HTML5์์ script ํ๊ทธ์ ์์ฑ์ธ async์ defer๊ฐ ์ถ๊ฐ๋์๋ค.
<!DOCTYPE html>
<html lang="en">
<head>
<script async src="main.js"></script>
</head>
<body></body>
</html>
โ async์์ฑ์ ์ด์ฉํ๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ html์ parsingํ๋ค๊ฐ async๋ฅผ ๋ง๋๊ฒ ๋๋ฉด jsํ์ผ์ด ์คํํ๋๋ก ๋ช ๋ น๋ง ํด๋๊ณ html parsing์ ๊ณ์ ์งํํ๋ค. ๊ทธ๋ฌ๋ค jsํ์ผ์ด ๋ชจ๋ load๊ฐ ์๋ฃ ๋์์๋ html parsing์ ๋ฉ์ถ๊ณ jsํ์ผ์ ์คํ์ํจ๋ค. ์คํ์๋ฃํ ๋ฉ์ท๋ html parsing์ ๋ค์ ์งํ์ํจ๋ค.
๐ jsํ์ผ์ด ์์์ ์์กดํ๋ ๊ฒฝ์ฐ, jsํ์ผ์ด ์๋ฃ๋๋ ๋๋ก ์งํ์ด ๋๊ธฐ ๋๋ฌธ์ ์์๊ฐ ๋ณด์ฅ๋์ง ์๋๋ค.
<!DOCTYPE html>
<html lang="en">
<head>
<script defer src="main.js"></script>
</head>
<body></body>
</html>
โ defer์์ฑ์ ์ด์ฉํ๋ฉด html์ parsingํ๋ค๊ฐ jsํ์ผ์ ๋ง๋๋ฉด jsํ์ผ์ด ์คํํ ์ ์๋๋ก ๋ก๋๋ฅผ ํ๋ค. html parsing์ ๊ณ์ ์งํ์ ํ๊ณ , ํ์ฑ์ด ์๋ฃ๊ฐ ๋๋ฉด jsํ์ผ์ ์์ฐจ์ ์ผ๋ก ์คํ์ํจ๋ค.
๐ DOM ์์ฑ์ด ์๋ฃ๋์์ ๋ jsํ์ผ์ด ์์ฐจ์ ์ผ๋ก ์คํ๋๊ธฐ ๋๋ฌธ์ ์์ฑ ์์๊ฐ ์ ์ง๋๋ค.