原文中,下列相关代码部分提现柯里化函数的 提前返回和延迟执行 两大特点,并且这样代码中只需要判断一次
浏览器类型。我对于代码的理解在于,每次实际调用addEvent
的时候,代码会进行一次函数执行,然后if(window.addEventListener) { ... }
这个内容还会进行一次浏览器判断。
感觉我的想法和作者的想法相悖了,所以我想问一下,为什么if(window.addEventListener)
在实际应用中只执行一次。即使下次调用addEvent
的时候,也不会进行浏览器判断
这是我在掘金上看到的一个案例,代码在后面
作者:小兴nice
链接:https://juejin.im/post/5b8350...
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
var addEvent = (function() { if(window.addEventListener) { // 只判断一次浏览器类型 return function(el, type, fn, capture) { el.addEventListener(type, function(e) { fn.call(el, e); }, capture); } }else { return function(ele, type, fn) { el.attachEvent('on' + type, function(e) { fn.call(el, e); }) } } })()
largeQ
森林海
相关分类