<script>,<script async>와<script defer>의 차이점에 관해 설명해주세요.
<script><script src="main.js"></script>
DOM 파싱(...ing) ➡ script태그를 만남 ➡ parsing 멈추고 fetching & executing js
순차적으로 script 실행되기 때문에 파싱 중단없이 html&css 화면이 먼저 빠르게 로딩된다.헤더에 <script async src="main.js"></script>선언
(*async=boolean 타입→ 기본 선언시 true)
병렬적으로 parsing DOM & fetching scriptParsing ➡ Parsing DOM & Fetching JS ➡ Executing JS(&Parsing paused) ➡ Parsing restart
순서 관계없이 빨리 다운로드되는 순으로 실행된다.(순서 의존적이라면 문제)헤더에 <script defer src="main.js"></script>선언
병렬적으로 parsing & script fetching parsing 모두 끝나면 (when page ready) execute jsParsing ➡ Parsing & JS Fetching ➡ Parsing Done ➡ JS Executing
<script>, <script async>와 <script defer>를 구분하여 사용하는 것은 프론트 단에서 속도 향상할 수 있는 방법 중 하나가 될 수 있다. 각각 장단점 참조하여 적합한 태그를 선택한다. DOM조작을 하거나 다른 파일에 종속적인 js 파일로드시 <script defer> 태그 사용이 적절하다.