第一種寫法里面的if分支只會執行一次,返回的函數里面已經不包含瀏覽器判斷了,所以相對于常規寫法,已經很棒了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函數,這樣后續的addEvent也不包含分支判斷語句了,感覺跟第一種寫法并沒有多大的區別,
但是第二種寫法被稱為惰性載入函數,可是我并沒有感覺他比第一種方式惰在哪里啊?相較來說,我更喜歡第一種方式,求解釋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);
};說的很清楚,謝謝!
關于addEventListener和attachEvent的兼容寫法疑問,求助!
www說
2018-11-14 13:13:47