亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

利用函數的惰性載入提高javascript代碼執行效率

2019-11-20 20:44:39
字體:
來源:轉載
供稿:網友
在 javascript 代碼中,因為各瀏覽器之間的行為的差異,我們經常會在函數中包含了大量的 if 語句,以檢查瀏覽器特性,解決不同瀏覽器的兼容問題。 例如,我們最常見的為 dom 節點添加事件的函數:
復制代碼 代碼如下:

function addEvent (type, element, fun) {
if (element.addEventListener) {
element.addEventListener(type, fun, false);
}
else if(element.attachEvent){
element.attachEvent('on' + type, fun);
}
else{
element['on' + type] = fun;
}
}

每次調用 addEvent 函數的時候,它都要對瀏覽器所支持的能力進行檢查,首先檢查是否支持addEventListener 方法,如果不支持,再檢查是否支持 attachEvent 方法,如果還不支持,就用 dom 0 級的方法添加事件。 這個過程,在 addEvent 函數每次調用的時候都要走一遍,其實,如果瀏覽器支持其中的一種方法,那么他就會一直支持了,就沒有必要再進行其他分支的檢測了, 也就是說,if 語句不必每次都執行,代碼可以運行的更快一些。

解決的方案就是稱之為惰性載入的技巧。

所謂惰性載入,就是說函數的if分支只會執行一次,之后調用函數時,直接進入所支持的分支代碼。 有兩種實現惰性載入的方式,第一種事函數在第一次調用時,對函數本身進行二次處理,該函數會被覆蓋為符合分支條件的函數,這樣對原函數的調用就不用再經過執行的分支了, 我們可以用下面的方式使用惰性載入重寫 addEvent()。
復制代碼 代碼如下:

function addEvent (type, element, fun) {
if (element.addEventListener) {
addEvent = function (type, element, fun) {
element.addEventListener(type, fun, false);
}
}
else if(element.attachEvent){
addEvent = function (type, element, fun) {
element.attachEvent('on' + type, fun);
}
}
else{
addEvent = function (type, element, fun) {
element['on' + type] = fun;
}
}
return addEvent(type, element, fun);
}

在這個惰性載入的 addEvent() 中,if 語句的每個分支都會為 addEvent 變量賦值,有效覆蓋了原函數。 最后一步便是調用了新賦函數。下一次調用 addEvent() 的時候,便會直接調用新賦值的函數,這樣就不用再執行if 語句了。

第二種實現惰性載入的方式是在聲明函數時就指定適當的函數。 這樣在第一次調用函數時就不會損失性能了,只在代碼加載時會損失一點性能。 一下就是按照這一思路重寫的 addEvent()。
復制代碼 代碼如下:

var addEvent = (function () {
if (document.addEventListener) {
return function (type, element, fun) {
element.addEventListener(type, fun, false);
}
}
else if (document.attachEvent) {
return function (type, element, fun) {
element.attachEvent('on' + type, fun);
}
}
else {
return function (type, element, fun) {
element['on' + type] = fun;
}
}
})();

這個例子中使用的技巧是創建一個匿名的自執行函數,通過不同的分支以確定應該使用那個函數實現,實際的邏輯都一樣, 不一樣的地方就是使用了函數表達式(使用了 var 定義函數)和新增了一個匿名函數,另外每個分支都返回一個正確的函數,并立即將其賦值給變量 addEvent。

惰性載入函數的優點只執行一次 if 分支,避免了函數每次執行時候都要執行 if 分支和不必要的代碼,因此提升了代碼性能,至于那種方式更合適,就要看您的需求而定了。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情日韩图片| 精品自拍视频在线观看| 尤物yw午夜国产精品视频| 2019中文字幕在线免费观看| 日日噜噜噜夜夜爽亚洲精品| 一区二区三区四区精品| 色综合久久88色综合天天看泰| 亚洲成人久久久久| 91久久国产综合久久91精品网站| 日韩精品在线第一页| 亚洲女人天堂网| 欧美极品在线播放| 日韩电影在线观看中文字幕| 欧美做受高潮电影o| 97免费在线视频| 国产色视频一区| 日韩精品www| 日韩精品亚洲精品| 日本久久久久久久久久久| 狠狠操狠狠色综合网| 国产精品日韩在线观看| 麻豆国产va免费精品高清在线| 一区二区三区黄色| 久热爱精品视频线路一| 国产精品久久综合av爱欲tv| 日韩av在线免费播放| 亚洲最大av在线| 国产日韩欧美日韩大片| 色中色综合影院手机版在线观看| 成人精品视频99在线观看免费| 国产精品免费网站| 九九精品在线观看| 亚洲国产97在线精品一区| 欧美激情第6页| 精品人伦一区二区三区蜜桃免费| 日本精品一区二区三区在线播放视频| 欧美日韩在线视频一区| 韩国国内大量揄拍精品视频| 中文综合在线观看| 成人免费激情视频| 日本sm极度另类视频| 成人黄色av免费在线观看| 国产视频亚洲精品| 欧美日韩国产一区中文午夜| 国产精品美女视频网站| 欧洲午夜精品久久久| 亚洲欧洲国产精品| 国产精品久久二区| 久久久99免费视频| 国产欧美在线观看| 亚洲人成电影在线播放| 日韩精品一区二区三区第95| 91精品在线播放| 日韩精品在线视频| 欧美性资源免费| 久久国产精品久久国产精品| 日韩电影大全免费观看2023年上| 国内揄拍国内精品少妇国语| 91精品国产高清自在线看超| 亚洲免费伊人电影在线观看av| 日韩精品久久久久| 精品亚洲精品福利线在观看| 亚洲精品国产精品久久清纯直播| 日韩av日韩在线观看| 中文字幕日韩高清| 欧美大全免费观看电视剧大泉洋| 91九色视频导航| 97色在线观看| 欧美激情亚洲另类| 97人人模人人爽人人喊中文字| 国产成人精品久久久| 456国产精品| 亚洲已满18点击进入在线看片| 亚洲欧美一区二区三区在线| 欧美高清激情视频| 国产精品99久久久久久白浆小说| 国产精品日韩欧美大师| 成人网在线观看| 欧美性生交xxxxxdddd| 92版电视剧仙鹤神针在线观看| 97视频免费在线观看| 免费97视频在线精品国自产拍| 尤物yw午夜国产精品视频明星| 91久久精品国产91性色| 国产欧美最新羞羞视频在线观看| 亚洲国产精品va在线看黑人| 在线亚洲午夜片av大片| 亚洲国产一区二区三区四区| 日韩精品免费看| 久久久精品国产网站| 欧美精品videosex性欧美| 亚洲国产精品成人一区二区| 91国产美女在线观看| 欧美成人精品xxx| 国产99久久久欧美黑人| 欧美老女人在线视频| 亚洲成人精品在线| 日韩精品在线视频美女| 亚洲精品99久久久久| 日韩一区二区三区在线播放| 亚洲香蕉伊综合在人在线视看| 国产精品揄拍500视频| 国外日韩电影在线观看| 国产午夜精品麻豆| 日韩久久免费视频| 91免费人成网站在线观看18| 热久久美女精品天天吊色| 亚洲人成在线观看| 久热99视频在线观看| 久久频这里精品99香蕉| 国产成人综合精品| 欧美在线视频观看免费网站| 亚洲sss综合天堂久久| 日韩精品极品在线观看| 欧美另类老肥妇| 日韩最新av在线| 日韩高清人体午夜| 久久久久北条麻妃免费看| 国产精自产拍久久久久久| 中文字幕久精品免费视频| 中文字幕欧美精品在线| 欧美疯狂做受xxxx高潮| 国产精品国产三级国产aⅴ浪潮| 成人日韩av在线| 国产91精品青草社区| 色妞欧美日韩在线| 中文字幕欧美精品在线| 7m精品福利视频导航| 亚洲第一精品自拍| 成人xxxx视频| 蜜月aⅴ免费一区二区三区| 欧美成人四级hd版| 亚洲第一视频网站| 欧美国产第二页| 在线观看91久久久久久| 久久这里只有精品99| 爱福利视频一区| 中文字幕视频在线免费欧美日韩综合在线看| 性欧美暴力猛交69hd| 国产亚洲视频在线| 亚洲最大av网站| 亚洲毛片在线观看.| 精品无码久久久久久国产| 国产精品丝袜久久久久久不卡| 成人午夜在线影院| 精品国产老师黑色丝袜高跟鞋| 91精品国产综合久久久久久久久| 久久电影一区二区| 欧美激情奇米色| 久久激情五月丁香伊人| 91tv亚洲精品香蕉国产一区7ujn| 久久亚洲精品中文字幕冲田杏梨| 55夜色66夜色国产精品视频| 国内精品久久久久久久久| 色综合91久久精品中文字幕| 亚洲人精选亚洲人成在线| 欧美亚洲另类在线| 国产视频精品久久久| 黑人与娇小精品av专区| 日韩精品在线私人| 国产精品a久久久久久| 国产精品户外野外| 国产精品男人爽免费视频1| 国产精品igao视频|