一、为什么如下代码会打印出六个6
let i = 0
for(i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
- setTimeout是指过一会儿再执行,也就是循环执行完再打印,当循环6次后,i变成了6,所以会打印出六个6
那么怎么打印出0、1、2、3、4、5呢?如下,只需要将let i = 0放入for中即可
for(let i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
- 因为JS在for和let一起使用时会加东西,每次循环都会把i复制一份留在空间里,所以会得到0、1、2、3、4、5