let i = 0
for(i = 0; i<6; i++){
  setTimeout(()=>{
    console.log(i)
  },0)
}
//打印出6个6

解释

  • i是全局变量
  • for循环遍历i
  • 而每次循环里都有setTimeout()
  • setTimeout()里的函数会在for循环结束后再执行
  • i = 6时,循环结束,一起打印6个6

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

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

3 除了 for let 配合,其他方法

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