所谓的预编嘞,就是在函数执行前,先预先编译一下的操作。
预编译都做了哪些事情呢?
首先预编译会创建一个AO对象,然后开始找代码中的形参和实参的声明(定义),值都为undefined,第三步是,把实参和形参相统一,也就是把实参的值给形参,最后呢,找函数声明,把有的函数声明的变量给覆盖掉
来个题目
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);
首先呢,安装步骤
1.创建一个AO对象
AO{
}
2.找代码中的形参和实参的声明
AO{
a:undefined
b:undefined
}
3.把实参和形参相统一
AO{
a:1
b:undefined
}
4.找函数声明
AO{
a:function a(){}
b:undefined
d:function d(){}
}