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

JavaScript預編譯

順序:
  ①語法分析
  ②預編譯
  ③解釋一行執行一行
預編譯:
       現象:函式宣告整體提升,變數  宣告提升,賦值不提升
      imply global(暗示全域性變數)如果變數未經宣告就賦值,則此變數為全域性物件window所有。一切宣告的全域性變數,全是window的屬性。window是全域性的域
   預編譯發生在函式執行的前一刻
   預編譯四步:
        ①建立AO物件(activation object活躍物件  執行期上下文(簡單說就是作用域))
         AO{}
        ②找形參和變數宣告,將變數和形參名作為AO的屬性名,值為undefined
        ③將實參值和形參統一
        ④在函式體裡找到函式宣告,值賦給函式體。
預編譯結束執行函式體,宣告部分不在執行,賦值部分要執行。


全域性的同理  生成的是GO物件,就是window物件

先生成GO在生成AO:先生成go,在執行函式的前一刻在生成AO