function foo(a) {
var b = 2;
function c() {}
var d = function() {};
b = 3;
}
foo(1);
AO = {
arguments: {
0: 1,
length: 1
},
a: 1,
b: undefined,
c: reference to function c(){},
d: undefined
}
其中b,d为什么是undefined? 不太懂这个过程唉
这是 foo函数执行初期的 执行上下文初始化阶段,主要工作是
确定作用域内的变量
和声明提升
。这里确定变量:
arguments对象
,a
,b
,c
,d
。其中
b,c,d
都存在声明提升。b,d
是变量声明提升,初始值即为undefined
。c
是 函数声明提升,初始值即为写的function c(){}
。