本文實(shí)例講述了JavaScript惰性載入函數(shù)。分享給大家供大家參考,具體如下:
惰性載入函數(shù)
惰性載入函數(shù)表示函數(shù)執(zhí)行的分支僅會(huì)發(fā)生一次,有兩種實(shí)現(xiàn)惰性載入函數(shù)的方式,第一種是在函數(shù)被調(diào)用時(shí)再處理,在第一次調(diào)用中,該函數(shù)會(huì)覆蓋為另外一個(gè)按合適方式執(zhí)行的函數(shù),這樣任何對(duì)函數(shù)的調(diào)用都不用再經(jīng)過執(zhí)行的分支了。第二種實(shí)現(xiàn)惰性載入的方式是在聲明函數(shù)時(shí)就制定適當(dāng)?shù)暮瘮?shù),這樣,第一次調(diào)用函數(shù)時(shí)就不會(huì)損失性能了,而在代碼首次加載時(shí)會(huì)損失一點(diǎ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語(yǔ)句的每個(gè)分支都會(huì)為test1變量賦值,有效覆蓋了原有的函數(shù),最后一步便是調(diào)用新賦的函數(shù),下一次調(diào)用test1()的時(shí)候就會(huì)直接調(diào)用被分配的函數(shù),就不會(huì)再走if語(yǔ)句了,這樣就可以提高性能。
載入方式二
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; } }})(); 不同點(diǎn)是使用了立即執(zhí)行函數(shù),通過var來(lái)定義函數(shù),在每個(gè)if分支中return一個(gè)函數(shù)
總結(jié)
這兩種方式都能避免執(zhí)行不必要的代碼。方式一中第一次調(diào)用會(huì)損失性能,方式二重首次加載時(shí)會(huì)損失性能
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
新聞熱點(diǎn)
疑難解答