1 为什么如下代码会打印 6 个 6
let i = 0
for(i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
setTimeout函数会在for循环全部结束之后再执行,当i的值为6时才会停止循环,所以当i的值为6时,console.log(i)执行了6次,打印出6个6
2 写出让上面代码打印 0、1、2、3、4、5 的方法
for (let i = 0; i < 6; i++){
setTimeout(() => {
console.log(i)
}, 0)
}
let出的变量的作用域只能在当前函数中,所以每次for循环生成的都是一个新的i,setTimeout里输出的i就是这个新的i,这个i是不会变化的,所以可以打印出0-5
3 使用其他方法打印出 0、1、2、3、4、5
for(var i = 0; i < 6; i++){
setTimeout((i) =>
console.log(i), 0, i)
}