一、为什么如下代码会打印 6 个 6
let i = 0
for(i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
解释: 因为for函数先循环完得到i=6,在打印6个6,就类似当你手头上有事情,你将这件事情做完再去打印i,而且只有一个i,每次打出的i都是最新值,所以呢事情就代表for循环,然后等你循环完了再去打印,0代表立刻马上,不需要等。
二、让上面代码打印 0、1、2、3、4、5 的方法
for(let i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
解释: 因为JS在for和let一起用的时候会加东西,每次循环会多创建一个i。
三、另一个可以打印出 0、1、2、3、4、5的方法
let i
for(i = 0; i<6; i++){
!function(a){ setTimeout(()=>{
console.log(a)
},0)
}(i)
}