/ JAVASCRIPT

script, script async, script defer의 차이

JavaScript 관련 글입니다.




오늘은 script 태그에 대해서 알아보겠습니다. script태그는 자바스크립트를 정의할 때 사용합니다. 문서파일에 자바스크립트를 추가하는 방법이 3가지가 있는데, 각각 특징이 다릅니다. 이것에 대해서 정리해 보도록 하겠습니다.

script, script async, script defer 의 차이


  1. script
    그냥 일반적인 방법입니다. HTML을 파싱하는 중에 이 script태그를 만나면 HTML파싱을 중지하고 스크립트를 다운받아 파싱하고 실행합니다. 이것이 완료되면 다시 HTML을 파싱합니다.

  2. script async
    async 속성이 붙은 경우입니다. 이것은 HTML파싱을 하면서 script태그를 만나면 문서를 파싱하면서 스크립트를 다운받습니다. 다운이 완료되는 즉시 HTML 파싱을 멈추고 스크립트를 실행합니다. 실행이 끝나면 남은 HTML 문서를 분석합니다.

  3. script defer
    defer 속성이 붙은 경우는 async 처럼 script태그를 만났을 때 스크립트를 다운받는데, HTML파싱이 모두 완료되면 받아놓은 자바스크립트를 실행하게 됩니다. HTML을 파싱하는 동안 필요한 자바스크립트파일을 받아놓고 HTML을 모두 파싱해서 사용자에게 페이지를 먼저 보여준 후 바로 이어서 자바스크립트를 실행합니다.

정리


  • script 태그 : HTML 파싱중에 script 태그 만남 -> HTML파싱을 중지하고 스크립트 다운,파싱,실행 -> 끝나면 다시 HTML파싱
  • script async 태그 : HTML 파싱중에 script 태그 만남 -> 아직 HTML 파싱을 중지시키지 않고 스크립트 다운 -> 다운완료되면 그때서야 HTML파싱 중지 후 스크립트 실행 -> 끝나면 다시 HTML파싱
  • script defer 태그 : HTML 파싱중에 script 태그 만남 -> HTML파싱을 중지시키지 않고 스크립트를 다운받음 -> 다운완료되어도 HTML파싱을 모두 완료한 후에야 스크립트를 실행함.




End.