1、关系
- 全局上下文中的变量对象就是全局对象(执行时主要是活动对象起作用)
2、函数上下文两个对象
-
AO 活动对象(activation object, AO)来表示变量对象,可在 JavaScript 环境中访问,只有到当进入一个执行上下文中,这个执行上下文的变量对象才会被激活
-
活动对象是在进入函数上下文时刻被创建的,它通过函数的 arguments 属性初始化。arguments 属性值是 Arguments 对象
-
GO 全局对象
3、 执行过程
- 分析和执行
- 例子
function foo(a) {
var b = 3;
function c() {}
var d = function() {};
b = 6;
}
foo(2);
- 分析过程 (初始状态 var 定义的内容都是undefined)
AO = {
arguments: {
0: 1,
length: 1
},
a: 2,
b: undefined,
c: reference to function c(){},
d: undefined
}
- 执行过程 (顺序执行代码 并且修改对应的值 )
AO = {
arguments: {
0: 1,
length: 1
},
a: 2,
b: 6,
c: reference to function c(){},
d: reference to FunctionExpression "d"
}
4、更全面信息请看 github.com/huanhunmao
5、需要注意的两个例子