所有<script>元素都會按照它們在頁面中出現(xiàn)的先后順序依次被解析。在不使用 defer 和async 屬性的情況下,只有在解析完前面<script>元素中的代碼之后,才會開始解析后面<script>元素中的代碼。
由于瀏覽器會先解析完不使用 defer 屬性的<script>元素中的代碼,然后再解析后面的內(nèi)容,所以一般應(yīng)該把<script>元素放在頁面最后,即主要內(nèi)容后面,</body>標(biāo)簽前面。
使用 defer 屬性可以讓腳本在文檔完全呈現(xiàn)之后再執(zhí)行。延遲腳本總是按照指定它們的順序執(zhí)行。
使用 async 屬性可以表示當(dāng)前腳本不必等待其他腳本,也不必阻塞文檔呈現(xiàn)。不能保證異步腳本按照它們在頁面中出現(xiàn)的順序執(zhí)行。