for (var i= 0;i< 5; i++){ setTimeout(function() {console.log(i) },1000*i)}
时间: 2024-05-21 22:17:37 浏览: 94
使用setTimeout()方法模拟进度条
4星 · 用户满意度95%
这段代码的输出结果并不是我们期望的 0,1,2,3,4,而是 5,5,5,5,5。原因是在 for 循环中使用了 var 关键字,它会将变量 i 绑定到函数作用域,而不是循环体作用域。因此,当 setTimeout 函数执行时,循环已经结束,i 的值变成了 5。要解决这个问题,可以使用 let 关键字来将 i 绑定到循环体作用域。示例代码如下:
for (let i = 0; i < 5; i++) {
setTimeout(function() {
console.log(i);
}, 1000 * i);
}
这样就可以得到我们期望的输出结果了。
阅读全文