首页 > 其他 > 详细

函数里面for循环延迟打印引发的闭包问题

时间:2021-06-08 17:15:48      阅读:8      评论:0      收藏:0      [点我收藏+]

期待结果:每隔一秒输出一个累加值

  • temp1:默认,为什么不行
function fn(){
  for(var i = 0; i < 5; i++){
    setTimeout(() => {
      console.log(i)
    },i*1000)
  }
}
  • temp2:函数参数保存值,为什么可以
function fn(){
  for(var i = 0; i < 5; i++){
    function inner(j){
      setTimeout(() => {
        console.log(j)
      },j*1000)
    }
    inner(i)
  }
}
  • temp3:匿名函数传参自调,为什么可以,和temp2有什么区别
functon fn(){
  for(var i = 0; i < 5; i++){
    (function(){
      setTimeout(() => {
        console.log(i)
      },i*1000)
    })(i)
  }
}
  • temp4:使用let,为什么var不可以
function fn(){
  for(let i = 0; i < 5; i++){
    setTimeout(() => {
      console.log(i)
    },i*1000)
  }
}
  • temp5:还有啥方式

函数里面for循环延迟打印引发的闭包问题

原文:https://www.cnblogs.com/zoo-x/p/14862260.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!