闭包三种方法实现delayer: 0, delayer:1…

for(var i=0;i<5;i++){
  setTimeout(function(){
    console.log('delayer:' + i );
  }, 0);
  console.log(i);
}
//输出:
0
1
2
3
4
delayer:5
delayer:5
delayer:5
delayer:5
delayer:5

闭包实现:delayer: 0, delayer:1…

//方法一:
for(var i=0;i<5;i++){
  (function(){
    var n=i;
    setTimeout(function(){
      console.log('delayer:' + n );
    }, 0)
  })();

  console.log(i);
}
//方法二:
for(var i=0;i<5;i++){
  (function(n){
    setTimeout(function(){
      console.log('delayer:' + n );
    }, 0)
  })(i);

  console.log(i);
}
//以上两种方法输出:
0
1
2
3
4
delayer:0
delayer:1
delayer:2
delayer:3
delayer:4
//方法三:
for(var i=0;i<5;i++){
  setTimeout(function(n){
    console.log('delayer:' + n );
  }(i), 0);

  console.log(i);
}  
//输出:
delayer:0
0
delayer:1
1
delayer:2
2
delayer:3
3
delayer:4
4
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本章将会介绍 闭包表达式尾随闭包值捕获闭包是引用类型逃逸闭包自动闭包枚举语法使用Switch语句匹配枚举值关联值原...
    寒桥阅读 1,571评论 0 3
  • 闭包是自包含的函数代码块,可以在代码中被传递和使用。Swift 中的闭包与 C 和 Objective-C 中的代...
    雨影阅读 726评论 0 2
  • 闭包可以从定义它们的上下文中捕获和存储对任何常量和变量的引用。 这被称为关闭这些常量和变量。 Swift处理所有的...
    Joker_King阅读 598评论 0 2
  • 本教程版权归小圆和饥人谷所有,转载须说明来源 问题 什么是闭包? 有什么作用闭包(closure)是指有权访问另一...
    饥人谷__小圆阅读 502评论 0 0
  • [cp]【长期使用药物抑制胃酸倒流可以使患胃癌风险加倍】发表于《肠道》上的一项研究显示,长期使用质子泵抑制剂会将胃...
    Annie大讲堂阅读 168评论 0 0