一段伪代码 目的是睡服自己理解V8都干了什么
`
// 伪代码
// 编译器 都干了什么 确定 作用域链 词法作用域
var VOFoo = {} // foo的变量对象
var VOBar = {} // bar的变量对象
var fooScopeChain = \[VOFoo, window\] // foo的作用域链
var barScopeChain = \[VOBar, VOFoo, window\] // bar的作用域链
// 引擎 都干了什么
function foo() {
// 创建阶段
// 给foo的变量对象赋值
VOFoo = {
args: \[\],
bar: bar,
a: undefined,
b: undefined
}
// 给foo的执行上下文赋值
var ECFoo = {
VO: VOFoo,
ScopeChain: fooScopeChain,
this: window
}
// 执行阶段
VOFoo.a = 20
VOFoo.b = 30
function bar() {
// 创建阶段
// 给bar的变量对象赋值
VOBar = {
args: \[\]
}
// 给bar的执行上下文赋值
var ECBar = {
VO: VOBar,
ScopeChain: barScopeChain,
this: window
}
return a + b
}
return bar
}
`
以上代码纯属yy
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。