JS 函数的执行时机

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

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

-函数一共会执行6次循环,每次循环到i = 6的时候就打印出值
-在有setTimeout()语句的情况下,需要把循环执行完后,再打印出i

2 写出让上面代码打印 0、1、2、3、4、5 的方法

把let i = 0合并到for循环中:

for(let i = 0; i<6; i++){
  setTimeout(()=>{
    console.log(i)
  },0)
}
// => 0, 1, 2, 3, 4, 5

3 除了使用 for let 配合,还有什么其他方法可以打印出 0、1、2、3、4、5

用for...in...语句遍历数组

let arr1 = [0,1,2,3,4,5]
for(i in arr1){
    console.log(i)
}