最常见的是利用js特有的同名函数覆盖的特性来优化js函数性能。
最常见的就是这样的一个写法。
function addEvent(element,type,fun){\
if(element.addEventListener){
//do
}
else if(element.attache){
//do
}
else{
//do
}
}
然后通过函数惰性加载,变成下面。
function addEvent(element,type,fun){
if(element.addEventListener){
addEvent=function(){
//do
}
}
else if(element.attache){
addEvent=function(element,type,fun){
//do
}
//do
}
else{
addEvent=function(element,type,fun){
//do
}
//do
}
return addEvent(element,type,fun)}
利用函数被覆盖之后就不会做if判断,优化js函数的性能,最后终于在很多人的帮助下,理解了最重要的最后一句代码,return。
return addEvent(element,type,fun)这句话并不像它本身看上去那样复杂,返回一个函数什么的,它就等同于 addEvent(element,type,fun)。是执行绑定事件的语句。
如果没有它,那么第一次事件绑定不会执行。会被浏览器当成函数声明而掠过执行函数。