JS闭包问题:这个for循环为何是每隔一秒打印一次

这是个js闭包相关的问题

for (let i = 0; i < 5; i++) {
    setTimeout(function() {
        console.log(i)
    }, 1000 * i)
}

图片描述

setTimeout的1000*i为什么除了第一次是0毫秒,其余都是1000毫秒,i为什么一直都是1呢

阅读 2.9k
1 个回答

setTimeout(fn, timer)是一个定时器,即注册一个函数fn, timer(并不一定完全一样)后执行。
对于此题,相当于注册了5个定时器,分别是 0s, 1s, 2s, 3s, 4s后执行相应的fn -->> function() {console.log(i)}, 所以效果是每隔一秒打印一次。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题