预编译基础栗子

预编译函数

简单来讲spa

函数声明总体提高code

变量 声明提高对象

深刻解说io

  1. 预编译前奏 :console

    1. 任何变量,若是未经声明就赋值的变量, 此变量为全局对象全部 (暗示全局变量)
    2. 一切声明的全局变量,全是window的属性 var a = 123; ==> window.a = 123;
  2. 预编译 :编译

    1. 建立AO(Activation Object)(执行期上下文) AO{}
    2. 找形参和变量声明,将变量和形参名做为AO 的属性名,值为undefined AO{ a:undefined, b:undefined }
    3. 将实参和形参统一 AO{ a:1, b:undefined }
    4. 在函数体里面找函数声明,值赋予函数体 AO{ a:function a(){}, b:undefined, d:function d(){} }

    全局预编译,生成一个GO对象(Global Object)function

例子:class

AO:{
    a: function a(){}
    b: undefined
    d: function d(){} 
}
function fn(a){
    console.log(a); 

    var a = 123;

    console.log(a); 

    function a(){}

    console.log(a); 

    var b = function(){}

    console.log(b);

    function d(){}
}
fn(1);复制代码
相关文章
相关标签/搜索