async, defer

스크립트 적용 순서

스크립트를 어떻게 넣냐에 따라 같은 코드여도 작동이 다르게 될 수 있다.

head에 script를 넣는 방법

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8"/>
    <title>Document</title>
    <script src="main.js"></script>
  </head>
  <body></body>
</html>

head에 script를 넣었을 때의 파싱 순서

body 끝에 script를 넣는 방법

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8"/>
    <title>Document</title>
  </head>
  <body>
    <div></div>
    <script src="main.js"></script>
  </body>
</html>

body 끝에 script를 넣었을 때의 파싱 순서

head에 넣고 script에 async를 넣는 방법

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8"/>
    <title>Document</title>
    <script async src="main.js"></script>
  </head>
  <body>
    <div></div>
  </body>
</html>

head에 넣고 script에 async를 넣었을 때의 파싱 순서

head에 넣고 script에 defer를 넣는 방법

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8"/>
    <title>Document</title>
    <script defer src="main.js"></script>
  </head>
  <body>
    <div></div>
  </body>
</html>

head에 넣고 script에 defer를 넣었을 때의 파싱 순서

head의 여러 스크립트를 async로 불러올 경우

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8"/>
    <title>Document</title>
    <script async src="a.js"></script>
    <script async src="b.js"></script>
    <script async src="c.js"></script>
  </head>
  <body>
    <div></div>
  </body>
</html>

head의 여러 스크립트를 async로 불러올 경우의 파싱 순서

head의 여러 스크립트를 defer로 불러올 경우

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8"/>
    <title>Document</title>
    <script defer src="a.js"></script>
    <script defer src="b.js"></script>
    <script defer src="c.js"></script>
  </head>
  <body>
    <div></div>
  </body>
</html>

head의 여러 스크립트를 defer로 불러올 경우의 파싱 순서

Discussion and feedback