1. 程式人生 > ><script>標簽中的 defer 與 async區別

<script>標簽中的 defer 與 async區別

inf src 維護 sync 腳本執行 順序 執行 使用 完成後

  在html裏,使用<script>標簽對腳本進行外部或內部引用,<script>標簽包含了兩個特殊的屬性:defer與async,他們的區別如下:

  1.若<script>標簽引用的是內部腳本,即如:

技術分享圖片

  此時這兩個屬性不起任何作用,腳本會從上到下依次執行。

  2.若<script>標簽引用的是外部腳本,即如:

  技術分享圖片

  此時標簽中引入defer="defer",表明此腳本會立即下載,但會延遲到整個頁面都解析完成後再依次運行(此處的依次是指下載完成的先後順序);而引入async(XHTML寫法:async="async"),表明次腳本會立即下載,並再下載完成後立即執行,即使此時文本正在執行,也會暫停下來執行下載完的腳本,並且不能保證腳本執行的先後順序;<script>標簽默認情況下是不會引入這兩個屬性的,所以默認行為是從上到下執行,為了避免在執行操作元素的腳本找不到還未渲染的元素而產生邏輯問題,通常情況下會將<script>標簽引用的腳本申明到<body>標簽後;

  (建議使用外部腳本引用,這樣會有利於後期代碼維護,並且可以對引用腳本進行緩存)

<script>標簽中的 defer 與 async區別