中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在JavaScript中惰性載入函數

發布時間:2021-05-14 16:19:51 來源:億速云 閱讀:115 作者:Leah 欄目:web開發

這期內容當中小編將會給大家帶來有關如何在JavaScript中惰性載入函數,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

定義

惰性載入函數表示函數執行的分支僅會發生一次,有兩種實現惰性載入函數的方式,第一種是在函數被調用時再處理,在第一次調用中,該函數會覆蓋為另外一個按合適方式執行的函數,這樣任何對函數的調用都不用再經過執行的分支了。第二種實現惰性載入的方式是在聲明函數時就制定適當的函數,這樣,第一次調用函數時就不會損失性能了,而在代碼首次加載時會損失一點兒性能。

功能

由于現在瀏覽器之間的差異,為了實現跨瀏覽器工作,很多函數要書寫大量if語句或者try…catch…語句。當每次調用函數時,都要對每個if分支或try語句進行檢查,這樣會使得瀏覽器反應變慢。實際上,當我們用某個瀏覽器打開網頁時,就決定了某個if分支或try語句是可用的,沒有必要每次調用都檢查。為了解決以上問題,JavaScript中出現一種名為惰性載入的技巧。

示例

載入方式一

var flag = 1;
function test1() { 
if(typeof flag === 'undefined') { 
test1 = function() {  
return 0; 
} 
} else if(flag === 1) { 
test1 = function() {  
return 1; 
} 
} else { 
test1 = function () {  
return -1; 
} 
} 
return test1();
}

這里if語句的每個分支都會為test1變量賦值,有效覆蓋了原有的函數,最后一步便是調用新賦的函數,下一次調用test1()的時候就會直接調用被分配的函數,就不會再走if語句了,這樣就可以提高性能。

載入方式二

var flag = 1;
var test2 = (function() { 
if(typeof flag === 'undefined') { 
return function() {  
return 0; 
} 
} else if(flag === 1) { 
 return function () {  
 return 1; 
 } 
 } else { 
 return function () {  
 return -1; 
 } 
 }
 })();

不同點是使用了立即執行函數,通過var來定義函數,在每個if分支中return一個函數。

優勢

惰性載入函數有兩個主要優點,第一是顯而易見的效率問題,雖然在第一次執行的時候函數會意味賦值而執行的慢一些,但是后續的調用會因為避免的重復檢測更快;第二個是要執行的適當代碼只有當實際調用函數是才執行,很多JavaScript庫在在加載的時候就根據瀏覽器不同而執行很多分支,把所有東西實現設置好,而惰性載入函數將計算延遲,不影響初始腳本的執行時間。

JavaScript有什么特點

1、js屬于一種解釋性腳本語言;2、在絕大多數瀏覽器的支持下,js可以在多種平臺下運行,擁有著跨平臺特性;3、js屬于一種弱類型腳本語言,對使用的數據類型未做出嚴格的要求,能夠進行類型轉換,簡單又容易上手;4、js語言安全性高,只能通過瀏覽器實現信息瀏覽或動態交互,從而有效地防止數據的丟失;5、基于對象的腳本語言,js不僅可以創建對象,也能使用現有的對象。

上述就是小編為大家分享的如何在JavaScript中惰性載入函數了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

固镇县| 桦甸市| 鹤岗市| 安陆市| 弋阳县| 永靖县| 朝阳区| 南川市| 赣榆县| 新源县| 南丰县| 镇沅| 漯河市| 岚皋县| 长岭县| 墨竹工卡县| 龙海市| 潢川县| 石泉县| 板桥市| 诸暨市| 双城市| 黑龙江省| 连平县| 平乐县| 安丘市| 马尔康县| 保山市| 株洲县| 徐州市| 遵化市| 广河县| 九寨沟县| 阳新县| 和平区| 德保县| 新巴尔虎右旗| 呼伦贝尔市| 峨眉山市| 阜城县| 交城县|