概述:预编译是js运行三部曲 1.语法分析 2.预编译 3.解释执行 中的中间步骤
> 预编译发生在函数执行的前一刻
> 1.函数声明整体提升 2.变量 声明提升
预编译总共分成四部
1). 创建AO对象
2). 找形参和变量声明,将变量和形参名作为AO属性名,值为undefined
3). 将实参值和形参统一
4). 在函数体里面找到函数声明,值赋予函数体
实例如下
<script>
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);
</script>