JS的执行时机

2021-08-01  本文已影响0人  AuraAura
  1. 以下代码输出结果以及原因
let i = 0
for(i = 0; i<6; i++){
  setTimeout(()=>{
    console.log(i)
  },0)
}
//输出6、6、6、6、6、6(6个6)

首先在for循环之前let i定义了变量i,setTimeout(code,millisec)方法用于在指定的millisec毫秒数后调用函数或计算表达式。在执行for循环时,执行了6次setTimeout 后打印i,真正打印i的时候,i的值已经执行完了循环变成了6,所以打印出来6个6

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

在for循环中定义变量i,每次执行循环时i都会被复制一份,留在执行环境内,所以不影响上一次循环的变量i

  1. 除了使用 for let 配合,其他方法可以打印出 0、1、2、3、4、5的方法
for(let i = 0; i<6; i++){
! function(){
    console.log(i)
  }(i)
}

每次执行循环时i作为参数传进局部函数,形成闭包,上一次的循环i不会被影响

上一篇 下一篇

猜你喜欢

热点阅读