doubleyong
管理员
管理员
  • 最后登录2026-05-10
  • 发帖数1198
  • 最爱沙发
  • 喜欢达人
  • 原创写手
  • 社区居民
  • 忠实会员
阅读:5811回复:0

[js]IIFE

楼主#
更多 发布于:2020-03-26 20:21

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
知识需要管理,知识需要分享
游客


返回顶部

公众号

公众号