Js中的defer屬性和async屬性

2021-10-01 04:33:00 字數 1070 閱讀 9688

一、defer和async

1、defer:指外部js檔案和當前html頁面同時載入(非同步載入),但只在當前頁面解析完成之後執行js**

async:指外部js檔案和當前html頁面同時載入(非同步載入),在當前js檔案載入完成後,執行js**

二、defer和sync屬性只對外部指令碼檔案有效:

上圖表明:這兩個屬性在內嵌式js中無效

三、當使用defer和async屬性時,js**中的document.write(…);無法生效。因為當當前頁面載入和解析完成之後,文件流已經關閉,所以無法向頁面中寫入內容了(可以使用dom方法寫入內容)

對「文件」執行「寫入」失敗:除非顯式開啟文件,否則無法從非同步載入的外部指令碼寫入文件。

四、外部js檔案的非同步載入和執行

擁有defer屬性和async屬性的外部js檔案屬於非同步載入,普通外部js檔案屬於同步載入

非同步載入:指同時載入,即某個js檔案載入的同時,其餘檔案也可以載入

同步載入:指某個js檔案載入的同時,其餘檔案不能載入,

defer和async的區別在於:defer在當前頁面載入並解析完成之後才執行js**。async在當前頁面載入的同時就可以執行js**(或者說在當前js載入完成後執行)

五、總結

①defer和async都屬於非同步載入

②defer是延遲執行(推遲解釋,當前html頁面解析完成後執行)js,async是當前js檔案載入完成後執行js

JS中defer和async的區別

先來試個一句話解釋仨,當瀏覽器碰到script指令碼的時候 沒有defer或async,瀏覽器會立即載入並執行指定的指令碼,立即 指的是在渲染該script標籤之下的文件元素之前,也就是說不等待後續載入的文件元素,讀到就載入並執行。有async,載入和渲染後續文件元素的過程將和script.js的載...

js中defer簡單理解

defer只是載入完成頁面元素後在執行js指令碼。其實就是簡單的利用defer屬性,讓瀏覽器讀js指令碼的時候完全不等指令碼開始讀就開始讀下面的啊,html 了。然後讓js指令碼自己在那裡慢慢讀取完以後再執行。給外鏈的js指令碼新增defer true 像下面這個這樣就可以了 特別是比較大的指令碼,...

js中defer簡單理解

defer只是載入完成頁面元素後在執行js指令碼。其實就是簡單的利用defer屬性,讓瀏覽器讀js指令碼的時候完全不等指令碼開始讀就開始讀下面的啊,html 了。然後讓js指令碼自己在那裡慢慢讀取完以後再執行。給外鏈的js指令碼新增defer true 像下面這個這樣就可以了 特別是比較大的指令碼,...