函数预编译AO对象

1,213 阅读1分钟

函数预编译AO(Activation Object)对象

carbon (2).png

AO对象加载顺序

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

AO{
 }

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

AO{
  a: undefined,
  b: undefined,
  c: undefined,
 }

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

AO{
  a: 1,
  b: 2,
  c: undefined,
 }

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

AO{
  a: function a(){},
  b: 2,
  c: undefined,
 }

5.以上初始化完成,函数内部代码执行

  • 打印 a // [Function: a]
  • c = 3
  • 打印c // 3
  • 打印b // 2
  • b = function c(){}
  • 打印b // [Function: c]