预编译
预编译过程发生在函数执行的前一刻
预编译四部曲
1,创建AO对象
2,找形参和变量声明,将变量和形参名作为AO对象的属性名, 值为undefined;
3,将形参和实参相统一
4,在函数体里面找函数声明,值赋予函数体
来源于哔哩哔哩 渡一教育JavaScript视频
https://www.bilibili.com/video/av64563473?p=11
可以从52分看起
// 预编译过程发生在函数执行的前一刻
// 编译四部曲
// 1,创建AO对象
// 2,找形参和变量声明,将变量和形参名作为AO对象的属性名, 值为undefined;
// 3,将形参和实参相统一
// 4,在函数体里面找函数声明,值赋予函数体
function test(a) {
console.log(a);
var a = 123;
console.log(a);
function a() {};
console.log(a);
var b = function () {};
console.log(b);
function d() {};
}
test(10);
输出结果
大致简略过程(写的很简略)推荐去看看视频