JavaScript中script標籤async與defer的區別

async:與後續元素渲染異步執行,亂序執行,若js文件之間存在依賴關係,容易產生錯誤,只適用於完全沒有依賴的文件,文檔解析過程中異步下載,下載完成之後立即執行。

defer:(H5規範中,defer是有序執行的,但實際不一定是有序執行的)與後續渲染異步執行,延遲到界面文檔解析完成之後執行,即爲立即下載,延遲執行。所有執行均在DOMContentLoaded 事件觸發之前完成。 

不帶屬性:加載到script立即下載並執行,阻塞後續渲染的執行。

最佳方案:外部引用文件放在</body>之前執行

對比圖如下:

<script/>放在<head/>與<body/>中的區別?

區別:加載順序的不同,在頁面加載之前下載,HTML加載順序是由上至下

<head/>:會在文檔加載前加載結束。

<body/>:不能保證哪個先加載結束(文檔?引用文件?)性能更優

注:內嵌的腳本也不要緊跟在<link>標籤之後,否則會導致頁面阻塞去等待樣式表的下載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章