var str = "global"; //AO1 AO1.str
function t(age){
console.log(str); // undefined
var str = "locale";
console.log(str); // locale
在执行JS function之前会进行《预编译》,形成AO对象:
* 1.分析函数的参数:
如果没有参数的话,AO对象上没有任何属性
Ao.age = undefined
* 2.分析函数的变量声明:
AO.str = undefined
* 3.分析函数的函数声明表达式:
无
AO.sum = functioon(){}
function t(age) {
console.log(age); // function age(){}
var age = 99;
console.log(age); // 99
function age() {
}
console.log(age); // 99
}
t(5);
// 预编译:activeobject AO
* 1.分析函数参数:
AO.age = 5
* 2.分析函数变量:
如果AO上有值,则不做处理,没有,AO加上
AO.age = 5
* 3.函数声明表达式
AO.age = function(){}
函数变量的作用域:
变量的作用域是在声明时决定的而不是调用执行时决定。