美文网首页
闭包三种方法实现delayer: 0, delayer:1…

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

作者: Maggie_77 | 来源:发表于2016-12-19 11:29 被阅读0次
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

相关文章

网友评论

      本文标题:闭包三种方法实现delayer: 0, delayer:1…

      本文链接:https://www.haomeiwen.com/subject/bnqtvttx.html