预编译执行过程
1. 创建AO对象(Activation Object)(执行期上下文)
2. 找形参和变量声明,将变量和形参作为AO属性名,值为undefined
3 . 将实参值和形参值统一
4 . 在函数体里面找函数声明,值赋予函数体
例:
function fu(a){
console.log(a); //function a() {}
var a = 123;
console.log(a); //123
function a() {}
console.log(a); //123
var b = function() {}
console.log(b); // function() {}
function d() {}
}
fn(1);
首先创建AO对象
AO{
a:undefined,
b:undefined,
}
AO{
a:1,
b:undefined,
d:function d() {}
}
AO{
a:function a(){},
b:undefined,
d:function d() {}
}
复制代码