js预编译
- 创建AO对象
- 找函数形参和变量声明,值给undefined
- 实参形参统一
- 在函数体里面找函数声明,值赋予函数体
代码语言:javascript
复制function fn(a){
console.log(a); //在AO里找值--->输出 function a() {}
var a = 123; //预编译将 var a,提升上去了,执行 a = 123;修改AO中a的值
console.log(a); //输出 123
function a() {} //预编译读过,不再读
console.log(a); //输出 123
var b = function() {} //函数表达式,将AO中b的值改为function () {}
console.log(b); //输出funtion () {}
function d() {}
}
fn(1);
代码语言:javascript
复制第一步:AO{ }
第二步:
AO{
a : undefined,
b : undefined
}
第三步:
AO{
a : 1,
b : undefined
}
第四步:
AO{
a : function a() {},
b : undefined,
d : function d() {}
}