JavaScript惰性載入函數(shù)實例分析
本文實例講述了JavaScript惰性載入函數(shù)。分享給大家供大家參考,具體如下:
惰性載入函數(shù)
惰性載入函數(shù)表示函數(shù)執(zhí)行的分支僅會發(fā)生一次,有兩種實現(xiàn)惰性載入函數(shù)的方式,第一種是在函數(shù)被調(diào)用時再處理,在第一次調(diào)用中,該函數(shù)會覆蓋為另外一個按合適方式執(zhí)行的函數(shù),這樣任何對函數(shù)的調(diào)用都不用再經(jīng)過執(zhí)行的分支了。第二種實現(xiàn)惰性載入的方式是在聲明函數(shù)時就制定適當(dāng)?shù)暮瘮?shù),這樣,第一次調(diào)用函數(shù)時就不會損失性能了,而在代碼首次加載時會損失一點兒性能。
載入方式一
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ù)
總結(jié)
這兩種方式都能避免執(zhí)行不必要的代碼。方式一中第一次調(diào)用會損失性能,方式二重首次加載時會損失性能
更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《JavaScript常用函數(shù)技巧匯總》、《javascript面向?qū)ο笕腴T教程》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》及《JavaScript數(shù)學(xué)運算用法總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計有所幫助。
相關(guān)文章
獲取HTML DOM節(jié)點元素的方法的總結(jié)
在Web應(yīng)用程序特別是Web2.0程序開發(fā)中,經(jīng)常要獲取頁面中某個元素,然后更新該元素的樣式、內(nèi)容等。如何獲取要更新的元素,是首先要解決的問題。2009-08-08

