1、解释为什么如下代码会打印 6 个 6
let i = 0
for(i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
先声明一个i = 0 ,只有一个i
然后setTimeout(()=>{console.log(i)},0)意味着“过一会儿再执行console.log(i)”
就在这“过一会”后,i已经循环加到了6,所以循环6次console.log(i)只能打印出6个6。
2、 写出让上面代码打印出0~5的方法
只要把let i = 0放进参数里即可
for(let i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
for和let一起用时,每循环一次JS都会把i复制一次,也就是第一个i=0保留,复制出的i进入循环变成i=1,如此重复一直到i=6时不再进入循环,此时 i有0,1,2,3,4,5可以被打印出来。