JavaScript 从浅入深 100 题训练计划--(16)惰性函数
惰性函数(Lazy Function):
-
定义:函数第一次执行时,根据其环境重写自身
-
目的:避免每次执行都进行条件判断
-
场景:浏览器兼容性处理、环境检测
1 // 普通写法:每次调用都要判断 2 function addEvent(element, type, handler) { 3 if (element.addEventListener) { 4 element.addEventListener(type, handler, false); 5 } else if (element.attachEvent) { 6 element.attachEvent('on' + type, handler); 7 } else { 8 element['on' + type] = handler; 9 } 10 } 11 12 // 惰性函数写法:第一次执行后重写自身 13 const addEvent = (function() { 14 if (document.addEventListener) { 15 return function(element, type, handler) { 16 element.addEventListener(type, handler, false); 17 }; 18 } else if (document.attachEvent) { 19 return function(element, type, handler) { 20 element.attachEvent('on' + type, handler); 21 }; 22 } else { 23 return function(element, type, handler) { 24 element['on' + type] = handler; 25 }; 26 } 27 })(); 28 29 // 另一种写法:在函数内部重写 30 function addEvent(element, type, handler) { 31 if (element.addEventListener) { 32 addEvent = function(element, type, handler) { 33 element.addEventListener(type, handler, false); 34 }; 35 } else if (element.attachEvent) { 36 addEvent = function(element, type, handler) { 37 element.attachEvent('on' + type, handler); 38 }; 39 } else { 40 addEvent = function(element, type, handler) { 41 element['on' + type] = handler; 42 }; 43 } 44 45 // 第一次调用时执行 46 return addEvent(element, type, handler); 47 }

浙公网安备 33010602011771号