預編譯發生在函數執行的前一刻函數
預編譯(全局)spa
三部曲:對象
①、生成GO對象 (Global Object) // GO === window作用域
GO{io
}編譯
②、找形參和變量聲明,將變量和形參名做爲GO屬性名,值爲undefined變量
③、在函數體裏面找函數聲明,值——賦予函數體im
預編譯(局部)co
四部曲:生成
①、生成AO對象 (Activation Object 執行期上下文)「做用域」
AO{
}
②、找形參和變量聲明,將變量和形參名做爲AO屬性名,值爲undefined
③、將實參值和形參統一
④、在函數體裏面找函數聲明,值——賦予函數體
1、imply global 暗示全局變量:即任何變量,若是變量未經聲明就賦值,此變量就爲全局對象全部。
2、一切聲明的全局變量,都歸window全部
3、window就是全局
4、①函數聲明總體提高到邏輯最前面
②變量聲明提高到邏輯最前面
JS三部曲
一、依法分析
二、預編譯
三、解釋執行