函數(shù)的懶加載
本質就是js變量名的重新賦值
一般用于一些單次條件判斷个初,比如瀏覽器兼容性等剿骨,和立即執(zhí)行函數(shù)差不多覆旭,不過的話, 只是用到的時候再去執(zhí)行钉蒲,而立即函數(shù)是馬上執(zhí)行
針對不同瀏覽器的添加監(jiān)聽事件不同切端,所以定義監(jiān)聽事件的時候要進行兼容性判斷,
但是這種兼容性判斷顷啼,一般執(zhí)行一次即可
一般不用立即執(zhí)行踏枣,因為在瀏覽器中,js的執(zhí)行會阻塞dom樹的構建钙蒙,延遲渲染
一般編寫的思路為
- 聲明一個懶加載函數(shù)
- 進行條件判斷茵瀑, 不同情況,就重新對懶加載的函數(shù)名重新賦值(函數(shù)參數(shù)要一致)
- 末尾要執(zhí)行一些重新定義了的懶加載函數(shù)仪搔,即第一次執(zhí)行
- 后面的話瘾婿,由于已經(jīng)對懶加載函數(shù)進行了重定義蜻牢,所以一直使用的是 重定義后的值
var addEvent = function(elem, type, handler) {
if (window.addEventListener) {
addEvent = function(elem, type, handler) { //對addEvent的重新賦值
window.addEventListener(type, handler, false);
}
} else if (window.attachEvent) {
addEvent = function(elem, type, handler) { //也是重新定義
elem.attachEvent('on' + type, handler);
}
}
addEvent(elem, type, handler); //第一次調用的時候烤咧,由于經(jīng)過了addEvent的重定義偏陪,所以這里要執(zhí)行
}