预编译

173 阅读1分钟

预编译是在代码执行前的准备工作。预编译阶段发生变量声明和函数声明,没有初始化行为(赋值),匿名函数不参与预编译。只有在解释执行阶段才会进行变量初始化

预编译(函数执行前): 1.初始化全局对象,空对象 2.全局作用与下 函数声明提升。 3.全局作用有下 变量声明提升 4.给提升的函数赋值 function

预编译(函数执行): 1:初始化Active Objec (AO) 对象 2: 提升形参 3:提升函数 4:提升变量 5.给提升函数赋值 6: 形参实参相统一 如下例:

     var a = 123;
    var b = 1;
    function foo(){
        var b = 12;
        bar()
    }
    function bar(){
        console.log(a + b);
    }
    foo();  //124

结果输出为124