js预编译

预编译四步曲

  1. 创建AO对象

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

  3. 将实参值和形参统一

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

 代码实例如下

一、预编译(第一步:创建AO对象)

AO = { }

二、预编译(第二步:找形参和变量声明,将变量和形参名作为AO属性名,值为undefined)

AO = {
    a: undefined
    b: undefined
}

三、预编译(第三步:将实参值和形参统一)

AO = {
    a: 1
    b: undefined
}

四、预编译(第四步:在函数体里面找到函数声明,赋值予函数体)

AO = {
    a: function a(){}
    b: undefined
    d: function d(){}
}

 五、开始执行函数体代码

 console.log(a);  //function a(){}

 var a = 123;  //AO对象里面的a属性被重新赋值为:123

 console.log(a);  //123

 function a(){ }

 console.log(a);  //123

 var b = function (){ } //AO对象里面的b属性被重新赋值为:function(){}

 console.log(b);  //function(){ }

 function d (){}

 

你可能感兴趣的:(javascript)