defer和async是script標籤的兩個屬性,用於在不阻塞頁面文檔解析的前提下,控制腳本的下載和執行。都只適用於外聯樣式,不適用於內聯樣式瀏覽器
defer
- 用於開啓新的線程下載腳本文件,並使腳本在文檔解析完成後DOMContentLoaded方法以前執行。
- 若是有多個聲明瞭defer的腳本,則會按順序下載和執行
- defer腳本會在DOMContentLoaded和load事件以前執行
async
- HTML5新增屬性,用於異步下載腳本文件,下載完畢當即解釋執行代碼。
- 若是有多個聲明瞭async的腳本,其下載和執行也是異步的,不能確保彼此的前後順序
- async會在load事件以前執行,但並不能確保與DOMContentLoaded的執行前後順序
*:內聯的script標籤在瀏覽器加載時就會執行其中的內容 異步