GO?VO?AO?

GO?VO?AO?
BreezliGO?VO?AO?
我用 「剧场演出」 来比喻这些概念
GO (Global Object)
全局上下文对象(就是全局变量)
1 | var globalProp = "剧场灯光"; // 🎯 放入GO |
预编译阶段
1 | GO = { |
执行阶段
1 | GO = { |
VO (Variable Object)
变量对象
每个执行上下文都有
上下文创建到销毁
AO (Activation Object)
活动对象
函数调用时临时创建,调用结束销毁
用一个面试题例子来理解
1 | var a = 1; |
1.全局GO(初始): { a: undefined, test: function }
2.
var a = 1;
GO : { a: 1, test: function }3.
test();
创建AO : { a: undefined }4.
console.log(a)
: AO位于作用域最顶层,{ a: undefined } ,输出undefined
5.
var a = 2;
: AO : { a: 2 }6.调用函数结束,AO数据销毁,GO : { a: 1, test: function }