for (var i = 0 ; i < 6 ; i++) {
setTimeout(() => {
console.log (i)
}, 0)
}
这个循环会打印 6 个 6,而不是 0,1,2,3,4,5 因为 for 语句执行完后,i 立马会变成 6,并执行了 6 次 setTimeout。
如果要打印出 0,1,2,3,4,5,
可将 var 改成 let。
for (let i = 0 ; i < 6 ; i++) {
setTimeout(() => {
console.log (i)
}, 0)
}
或者将 setTimeout 放在 for 的外层。
setTimeout(() => {
for (var i = 0 ; i < 6 ; i++) {
console.log (i)
}
}, 0)
网友评论