1、解释以下代码为什么会打印出6个6
let i = 0
for(i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
setTimeout(,0)的意思是,尽快做,马上做。可以类比成我在打游戏,妈妈喊我去吃饭,那么我会说我马上就来,然后打完游戏再去吃饭。
- 那么这个
setTimeout(,0)也就意味着,要等到for循环执行完,在来执行这个函数。
- 这个for循环最终结果是 i = 6,结束循环,然后开始执行
setTimeout()的内容,执行6次,最后输出6个6
2、写出让上面代码打印 0、1、2、3、4、5 的方法
for(let i=0;i<6;i++){
setTimeout(()=>{
console.log(i)
},0)
}
3、除了使用 for let 配合,还有什么其他方法可以打印出 0、1、2、3、4、5
let i
for(i = 0; i<6; i++){
!function(j){
setTimeout(()=>{
console.log(j)
},0)
}(i)
}
- 利用 setTimeout 的第三个参数,将i传进去
let i
for(i = 0; i<6; i++){
setTimeout((value)=>{
console.log(value)
},0,i)
}
let i
for(i = 0; i<6; i++){
const x = i
setTimeout(()=>{
console.log(x)
})
}