编译
函数预编译
- 创建 AO 对象
- 找变量声明 形参,将变量名 形参名 当作 AO 对象的属性名,值为undefined
- 将实参和形参统一
- 在函数体内找函数声明,赋值予函数体
function fn(a,c){
console.log(a); // ƒ a(){}
var a = 111;
console.log(a); // 111
console.log(c); // ƒ c(){}
function a(){};
if(false){
var d = 222;
};
console.log(d); // undefined
console.log(b); // undefined
var b = function(){};
console.log(b); // ƒ (){}
function c(){};
console.log(c) // ƒ c(){}
};
fn(20,30)
全局预编译
- 创建 GO 对象
- 找变量声明,将变量名当作 GO 对象的属性名,值为undefined
- 找函数声明 赋值予函数体
console.log(test); // f test(){} console.log(b); // undefined function test(a){ console.log(c); // undefined var a = b = 365; c = 9; if(false){ var c = 1000 }; console.log(a) // 365 console.log(c) // 9 }; test(100); console.log(b); // 365 ? 注意连续赋值时 console.log(test) // f test(){} var test = 500; var b = 800;

浙公网安备 33010602011771号