解释为什么如下代码会打印 6 个 6
let i = 0
for(i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
setTimeout是等一会再执行的意思,这里循环先执行完,执行完这个循环之后i=6,i=6之后再去打印出6次i,所以得到6个6
写出让上面代码打印 0、1、2、3、4、5 的方法
for(let i=0;i<6;i++){
setTimeout(()=>{
console.log(i)
},0)
}
每次进入循环的时候,把i复制一份,不跟随新的i变化,所以六次循环就生成了6个新的i,再加上本身i=0,最大打印到i<5,所以是0、1、2、3、4、5
除了使用 for let 配合,还有什么其他方法可以打印出 0、1、2、3、4、5
用立即执行函数
for(i=0;i<6;i++){
!function(i){
setTimeout(()=>{console.log(i)},0)
}(i)
}