av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術(shù)文章
文章詳情頁

javascript - 關(guān)于addEventListener和attachEvent的兼容寫法疑問,求助!

瀏覽:139日期:2022-12-16 14:31:13

問題描述

第一種寫法

里面的if分支只會執(zhí)行一次,返回的函數(shù)里面已經(jīng)不包含瀏覽器判斷了,所以相對于常規(guī)寫法,已經(jīng)很棒了

var addEvent = (function(){ if(window.addEventListener){return function(elem, type, handler){ elem.addEventListener(type, handler, false);}; }else if(window.attachEvent){return function(elem, type, handler){ elem.attachEvent(’on’ + type, handler)}; }})();

第二種寫法

在第一次進(jìn)入if判斷后,重寫了addEvent函數(shù),這樣后續(xù)的addEvent也不包含分支判斷語句了,感覺跟第一種寫法并沒有多大的區(qū)別,但是第二種寫法被稱為惰性載入函數(shù),可是我并沒有感覺他比第一種方式惰在哪里啊?相較來說,我更喜歡第一種方式,求解釋

var addEvent = function(elem, type, handler){ if(window.addEventListener){addEvent = function(elem, type, handler){ elem.addEventListener(type, handler, false);}; }else if(window.attachEvent){addEvent = function(elem, type, handler){ elem.attachEvent(’on’ + type, handler);}; } addEvent(elem, type, handler);};

說的很清楚,謝謝!

Samhanx

問題解答

回答1:

注意第一種寫法的IIFE,這樣當(dāng)代碼執(zhí)行到這個(gè)addEvent函數(shù)賦值的時(shí)候就明確了addEvent到底是if返回的函數(shù)還是else if返回的函數(shù)。

第二種寫法在執(zhí)行代碼的時(shí)候addEvent還是最外層那個(gè)函數(shù),你實(shí)際調(diào)用addEvent()的時(shí)候,內(nèi)部進(jìn)行重新賦值,明確addEvent到底是什么,然后函數(shù)內(nèi)再自我調(diào)用,這就是惰性的地方吧。

注意這中間參數(shù)有個(gè)傳遞的過程,并且如果不調(diào)用的話,外層函數(shù)的引用會一直保存在addEvent上面,而第一種寫法的立即執(zhí)行函數(shù)執(zhí)行完之后,那個(gè)匿名函數(shù)占用的內(nèi)存就已經(jīng)開始等待回收了。

回答2:

我理解稱第二種方法為惰性載入函數(shù),是相對于第一種方法而言的: 1) 第一種方法,由于是IIFE,不管是否調(diào)用 addEvent, 都已經(jīng)確認(rèn)了瀏覽器支持的是addEventListener ,還是attachEvent; 2) 第二種方法,則是在顯式調(diào)用addEvent時(shí)候才能知道瀏覽器的支持情況。

回答3:

第二種方法第一次調(diào)用后已經(jīng)把a(bǔ)ddEvent重新賦值,第二次調(diào)用時(shí)就不需要進(jìn)行分支判斷了

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 亚洲激情欧美激情 | 国产香蕉视频在线观看 | 欧美性受xxxx黑人xyx性爽 | 一区二区国产精品 | 国产精品999 | 日皮视频免费看 | 日本欧美在线 | 欧美黄色一区二区 | 久久精品一区二区三区不卡牛牛 | 国产成人在线播放 | 久久最新视频 | 69视频网站| 天天综合永久入口 | 成人福利网站 | 福利视频网址 | 黄色在线免费看 | 国产在线小视频 | 四虎av在线 | 在线观看黄色小视频 | 国产一区二三区 | 亚洲成人国产 | 日韩欧美自拍 | 免费国产视频 | 欧美一区二区视频在线观看 | 好色网站| 欧美精品在线观看视频 | 蜜臀av性久久久久av蜜臀妖精 | 在线一区二区视频 | 一区二区三区高清 | 青青青草视频 | 爱爱免费小视频 | 日韩在线中文字幕 | 九色在线视频 | 香蕉视频免费看 | 国产午夜一区二区 | 一区二区中文 | 一级片观看 | 成人高潮片免费视频 | 国产精品入口夜色视频大尺度 | 免费一级黄色片 | 性av在线|