《JS函数的执行时机》

142 阅读1分钟

1. 解释为什么如下代码会打印 6 个 6?

let i = 0
for(i = 0; i<6; i++){
  setTimeout(()=>{
    console.log(i)
  },0)
}

Because: setTimeout函数的作用是让执行内容过一会儿再打印i的值,for循环每次循环一次,就要打印一次i的值,执行了6次,当i=6的时候跳出循环,当for循环结束的时候,要打印六次i的值,而此时i的值是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 (i){
     setTimeout(()=>{
        console.log(i)
     },0)   
}(i)
}