JS 函数的执行时机

89 阅读1分钟

let i = 0
for(i = 0; i<6; i++){
  setTimeout(()=>{
    console.log(i)
  },0)
}
  1. 问解释为什么上面代码会打印 6 个 6 ?
  • seTimeout的意思是,等一会在执行
  • seTimeout在循环只每次触发就会生成一个"计时钟",然后就停止了,但是外面的循环还在继续,就会不停的触发生成一个"计时钟",外面的循环结束时,一共触发了6次,一共生成了6个"计时钟".
  • 外面的代码外面的循环结束时,i的值为6,然后运行"计时钟",把i的值扔进6个计时钟里,运行计时钟,就显示了6个6.
  1. 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

  1. 除了使用 for let 配合,还有什么其他方法可以打印出 0、1、2、3、4、5
    var i = 0
    while(i<6){
      console.log(i)
      i++
      }