一段僞代碼 目的是睡服本身理解V8都幹了什麼
`this
// 僞代碼 // 編譯器 都幹了什麼 肯定 做用域鏈 詞法做用域 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 }
`
以上代碼純屬yycode