document는 html 문서가 전부 parsing 되어야 ready됨.
<head>
<title>Document</title>
<script src="main.js"></script>
</head>
중간에 등장하는 script를 실행하기 위해 나머지 뒷부분 html의 parsing을 멈추므로, 만약 JS가 무겁다면 화면 로드가 오래 걸릴 수 있음.
<head>
<title>Document</title>
</head>
<body>
<script src="main.js"></script>
</body>
html 요소는 바로 준비가 될 수 있지만 스크립트는 가장 마지막에야 다운로드가 시작되기 때문에, 자바스크립트 의존도가 높은 화면은 자바스크립트를 실행하기까지 불완전한 상태로 기다려야 함.
<head>
<title>Document</title>
<script async src="main.js"></script>
</head>
<head>
<title>Document</title>
<script defer src="main.js"></script>
</head>
브라우저는 스크립트를 만난 순간 html 파일과 함께 병렬로 다운로드받지만, html 파일의 parsing이 끝난 뒤에 왼료된 script파일을 실행시키므로 사용자는 안정적으로 출력된 화면을 보게 됨.