变量对象
- 过程:创建arguments-检查function声明创建属性-检查var声明创建属性
- 函数声明以及var声明的变量对象会发生变量提升,提升到该作用域的最上方
例子(变量提升)
function test() {
console.log(a);
console.log(foo());
var a = 1;
function foo() {
return 2;
}
}
test(); // undefined 1
- 正确执行顺序
function test() {
function foo() {
return 2;
}
var a;
console.log(a);
console.log(foo());
a = 1;
}
test();