1. 程式人生 > >JavaScript預編譯詳解

JavaScript預編譯詳解

Js的兩個特點:單執行緒,解釋性語言(翻譯一句執行一句)。
語法分析:通篇掃描,語法錯誤
預編譯: 函式宣告整體提升
變數,宣告提升
解釋執行:

imply global 暗示全域性變數:即任何變數, 如果變數未經宣告就賦值,此變數就為全域性變數所有(window),不會報錯。
一切宣告的全域性變數,都歸 window所有

預編譯發生在函式執行的前一刻
函式預編譯的四個步驟:
1.建立AO(Activation Object)物件(執行期上下文)。AO{}
2.找形參和變數宣告,將變數和形參名作為AO屬性名,值為undefined.
3.實參和形參相統一。
4.在函式體裡面找函式宣告,值賦予函式體。(變數名和函式名相同,函式宣告會覆蓋掉變數宣告的值)

全域性預編譯三個步驟:
生成GO(window ),因為沒有形參,省掉第三步,其餘一樣。

預編譯執行過的語句,函式執行時不會再次執行
先GO後AO