這期內(nèi)容當中小編將會給大家?guī)碛嘘P(guān)如何在JavaScript中惰性載入函數(shù),文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供上街網(wǎng)站建設(shè)、上街做網(wǎng)站、上街網(wǎng)站設(shè)計、上街網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、上街企業(yè)網(wǎng)站模板建站服務(wù),十年上街做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
定義
惰性載入函數(shù)表示函數(shù)執(zhí)行的分支僅會發(fā)生一次,有兩種實現(xiàn)惰性載入函數(shù)的方式,第一種是在函數(shù)被調(diào)用時再處理,在第一次調(diào)用中,該函數(shù)會覆蓋為另外一個按合適方式執(zhí)行的函數(shù),這樣任何對函數(shù)的調(diào)用都不用再經(jīng)過執(zhí)行的分支了。第二種實現(xiàn)惰性載入的方式是在聲明函數(shù)時就制定適當?shù)暮瘮?shù),這樣,第一次調(diào)用函數(shù)時就不會損失性能了,而在代碼首次加載時會損失一點兒性能。
功能
由于現(xiàn)在瀏覽器之間的差異,為了實現(xiàn)跨瀏覽器工作,很多函數(shù)要書寫大量if語句或者try…catch…語句。當每次調(diào)用函數(shù)時,都要對每個if分支或try語句進行檢查,這樣會使得瀏覽器反應(yīng)變慢。實際上,當我們用某個瀏覽器打開網(wǎng)頁時,就決定了某個if分支或try語句是可用的,沒有必要每次調(diào)用都檢查。為了解決以上問題,JavaScript中出現(xiàn)一種名為惰性載入的技巧。
示例
載入方式一
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變量賦值,有效覆蓋了原有的函數(shù),最后一步便是調(diào)用新賦的函數(shù),下一次調(diào)用test1()的時候就會直接調(diào)用被分配的函數(shù),就不會再走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; } } })();
不同點是使用了立即執(zhí)行函數(shù),通過var來定義函數(shù),在每個if分支中return一個函數(shù)。
優(yōu)勢
惰性載入函數(shù)有兩個主要優(yōu)點,第一是顯而易見的效率問題,雖然在第一次執(zhí)行的時候函數(shù)會意味賦值而執(zhí)行的慢一些,但是后續(xù)的調(diào)用會因為避免的重復(fù)檢測更快;第二個是要執(zhí)行的適當代碼只有當實際調(diào)用函數(shù)是才執(zhí)行,很多JavaScript庫在在加載的時候就根據(jù)瀏覽器不同而執(zhí)行很多分支,把所有東西實現(xiàn)設(shè)置好,而惰性載入函數(shù)將計算延遲,不影響初始腳本的執(zhí)行時間。
1、js屬于一種解釋性腳本語言;2、在絕大多數(shù)瀏覽器的支持下,js可以在多種平臺下運行,擁有著跨平臺特性;3、js屬于一種弱類型腳本語言,對使用的數(shù)據(jù)類型未做出嚴格的要求,能夠進行類型轉(zhuǎn)換,簡單又容易上手;4、js語言安全性高,只能通過瀏覽器實現(xiàn)信息瀏覽或動態(tài)交互,從而有效地防止數(shù)據(jù)的丟失;5、基于對象的腳本語言,js不僅可以創(chuàng)建對象,也能使用現(xiàn)有的對象。
上述就是小編為大家分享的如何在JavaScript中惰性載入函數(shù)了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。