揭秘:为什么下面代码会打印 6 个 6
let i = 0
for(i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
上面代码中的setTimeout的调用时机是在for循环结束之后执行的,当for循环结束之后,这个时候的i已经变成了6,当setTimeout在走的时候,i已经变成了6
根据执行语句的条件,for循环了6次,setTimeout也要跟着执行6次,所以打印了6个6
如何打印 0、1、2、3、4、5
for (let i = 0; i < 6; i++) {
setTimeout(() => {
console.log(i)
}, 0)
}
输出的结果为
除了使用 for let 配合,还有什么其他方法可以打印出 0、1、2、3、4、5
- 用传参的方式
let i = 0;
for (i = 0; i < 6; i++) {
setTimeout((j) => {
console.log(j)
}, 0, i)
}
输出结果为: