第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于addEventListener和attachEvent的兼容寫法疑問,求助!

關于addEventListener和attachEvent的兼容寫法疑問,求助!

www說 2018-11-14 13:13:47
第一種寫法里面的if分支只會執(zhí)行一次,返回的函數(shù)里面已經不包含瀏覽器判斷了,所以相對于常規(guī)寫法,已經很棒了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)         };     } })();第二種寫法在第一次進入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); };說的很清楚,謝謝!
查看完整描述

1 回答

?
FFIVE

TA貢獻1797條經驗 獲得超6個贊

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

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

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


查看完整回答
反對 回復 2018-12-10
  • 1 回答
  • 0 關注
  • 395 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號