JS 函数的执行时机

107 阅读1分钟

函数的执行机制

function f1(){
    let a = 1
    function f2(){
        let a = 2
        function f3(){
            console.log(a)
        }
        a = 22
        f3()
    }
    console.log(a)
    a = 100
    f2()
}
f1()

理解如上代码的结果就大概明白函数的执行时机了

  1. 为什么如下代码会打印 6 个 6?
let i = 0
for(i = 0; i<6; i++){
  setTimeout(()=>{
    console.log(i)
  },0)
}

答:因为i声明在全局,setTimeout定时器是过会儿执行,当要执行定时器时,循环已经结束,此时i的值为6,所以会打印出6个6

  1. 打印 0、1、2、3、4、5 的方法

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