AO对象,GO对象 的预解析和再执行

一、AO的初始化步骤 1.创建一个AO对象 AO{} 2.将函数内所有的 形参 和 变量声明的名 存储到 AO对象中,value为undefined 3.将形参

一、AO的初始化步骤

       1.创建一个AO对象 AO{}

       2.将函数内所有的 形参 和 变量声明的名 存储到 AO对象中,value为undefined

       3.将形参和实参进行相统一

      4.将所有的函数声明的函数名作为AO对象中的key,函数体内容为value存储到AO对象中

二、AO再执行 (赋值)

三、举例分析

function test(a,b){console.log(a);//ƒ a(){};var c=123;console.log(c);//123function a(){};console.log(b);//3function c(){};var b=function cd(){}console.log(b);//ƒ cd(){}}test(1,3);

    分析:

  1:

      AO{ }

 2:

   AO{

       a:undefined,

       b:undefined,

       c:undefined,

  }

 3:

 AO{

      a:1,

      b:3,

     c:undefined,

}

4:

 AO{

      a:function a(){},

      b:3,

      c:function c(){},

 }

5:执行---赋值

AO{

     a:function a(){},

     b:function cd(){},

     c:123,

}

四、GO对象同AO对象