|
IIFE(Immediately-Invoked Function Expression) 立即执行函数表达式 for(var i = 0;i < 5;i++){
setTimeout( function(){
console.log(i)
},500)
}上面的代码块我们的本意是想循环输出0,1,2,3,4,但是实际却只输出5。原因是执行完循环后才对循环体内的代码执行。如何解决这个问题,才有IIFE方法进行解决。 for(var i = 0;i < 5;i++){
(function(i){
setTimeout( function(){
console.log( i )
},1000)
})(i);
}通过上面方法,此时后台打印可以查看已经成为我们想要到答案。当然还有在JQuery或者Node中避免变量污染,使用这种方法。 ( function($){
//代码块
})(jQuery)参考:https://www.jianshu.com/p/5cb51ab1e43e |
|
|