作用域和作用域鏈
[[scope]]: 每個JavaScript函數都是一個對象,對象中有些屬性我們可以訪問,有些不可以,但有些不可以,這些屬性僅供JavaScript引擎存取,[[scope]]就是其中一個。[[scope]]指的是我們所說的作用域,其中存儲了運行期上下文集合。
作用域鏈:[[scope]]中所存儲的執行期上下文對象的集合,這個集合呈鏈式鏈接(叫做作用域鏈)
語法分析
通篇掃描看有沒有語法錯誤
預編譯
預編譯前奏
1.imply global 暗示全局變量:即任何變量,如果變量未經聲明
就賦值,此變量就爲全局變量所有
2.一切聲明的全局變量,全是window屬性
預編譯(發生在函數執行的前一刻)
四部曲:
{
this : window
arguments : {}
}
- 創建AO對象(Activation Object執行期上下文)
- 找形參和變量聲明,將變量和形參名作爲AO屬性名,值爲undefined
- 將實參和形參統一
- 在函數體裏面找函數聲明-----function test(){}