js代码执行过程

74 阅读1分钟

js代码在执行时,会先进行以下几个步骤:

  1. 语法检查
  2. 预编译

预编译发生在函数执行的前一刻。

函数预编译的步骤

  1. 创建AO对象 Activation Object(执行期上下文)

  2. 找形参和变量声明,将形参和变量作为 AO 对象的属性名,值为undefined。

  3. 将实参值和形参统一。

  4. 在函数体里面找函数声明,值赋予函数体

将函数声明提升,将 变量 提升,复制为undefined

function fun(a){
    console.log(a)
    
    var a = 123
    
    console.log(a)
    
    function a(){}
    
    console.log(a)
    
    var b = function(){}  //在这边函数声明已经往上提了,所以在这之前如果b的值经过重新赋值,就为新的值了
    
    console.log(b)
    
    function d(){}


}

fun(1)  function a(){}  123  123 function(){}

预编译不只发生在函数体内,全局也是。

全局生成的是一个 GO === window 对象 Global Object