惰性载入函数
各位前端程序员都知道,因为浏览器之间的差异,在写function的时候经常要用到大量的if else判断语句,将执行引导到正确的语句中去。例如
function XX(){ if(){ dosomething;}else if(){ dootherthing;}else{ doanotherthing; } }
每次调用XX时,浏览器都要进行仔细的判断,即使每次调用时分支的结果都不变。但是我们知道只要有if这种语句的代码,肯定要比没有的要慢。所以如果if语句不必每次执行,那么我们就可以提高函数的运行效率。解决方案呢,就是惰性载入技巧。
惰性载入函数的分支只会执行一次。有两种实现的方式。第一种是在函数被调用时在处理函数。在第一次调用时,该函数会覆盖为其中一个按照符合标准的函数(if里面的函数)。这样经过第一次调用之后,在调函数不用再经过执行的分支了。例:
function XX(){ if(){ XX=function(){ dosomething; }; }else if(){ XX=function(){ dootherthing; }; }else{ XX=function(){ doanotherthing; }; } return XX(); }
在这个惰性载入函数中,每一次执行分支都会为XX函数进行赋值,这样就会有效的覆盖原有的函数。下一次调用XX函数时就会直接调用被分配的函数。
第二种方法,明天再补充吧,太晚了先休息了~~