js的預編譯

2021-10-08 19:01:43 字數 1026 閱讀 6887

1.語法分析(通篇掃瞄看有沒有語法錯誤)

2.預編譯

3.解釋執行

預編譯有兩種情況:一種是全域性的預編譯 一種是函式的預編譯

函式的預編譯

預編譯(函式執行的前一刻):

下面**再預編譯的過程中發生了什麼變化呢

function

demo

(num)

var num =13;

console.

log(num)

;//13fu(

);//報錯

}

//預編譯發生在函式執行前一刻

1.建立ao物件(activation object)(函式的執行執行上下文;

activationobject{}

2.找函式形參和函式內變數宣告,將形參名和變數名作為ao物件的屬性名,值為undefined;相同的變數名直接覆蓋不新鍵

形參 :num

var 關鍵字宣告的:a num fu

相同的變數名直接覆蓋不新鍵

oa3.實參值和形參統一,實參值賦給形參;

形參傳遞的值為 :num = 10

oa4.在函式體裡面找函式宣告,值賦予函式體。相同的變數名直接覆蓋不新鍵]

函式體: fu()

相同的變數名直接覆蓋不新鍵

oa }

該步驟執行完後**等於與

function

demo

(num)fu(

);console.

log(a)

; a =

111;

; console.

log(a)

; fu =

"abc"

; console.

log(num)

; num =13;

console.

log(num);fu

();}

全域性的預編譯 基本和函式預編譯是一樣的知識們沒有i第三步

js的預編譯

預編譯發生在函式執行前一刻 預編譯執行的步驟 1建立執行期上下文,activation object 即ao 2找形參和變數宣告,將形參和變數宣告做為ao的屬性名,尚未賦值,值為 undefined 3將形參和實參相統一,即把實參的值傳到形參裡面去 4在函式體裡面找函式宣告,賦值函式體 functi...

js的預編譯

函式執行前函式究竟做了什麼?一。函式執行前,首先會通篇檢查有沒有語法或者 寫錯的,如果有就直接報錯,如果沒有就會進行下一步 二。函式的預編譯階段 1.首先會在函式內生成乙個ao物件,2.變數或者形參作為函式的屬性名或者鍵名屬性值是undefined 3.實參給形參 4.函式宣告作為屬性值,屬性名為f...

js的預編譯

js執行的三步 語法檢查,預編譯,解釋執行.js預編譯前 window物件 全域性 1.任何位置上的變數未宣告直接賦值是全域性變數,發到window裡 2.在函式外宣告的變數也是全域性,放到window裡.js預編譯時 對函式來說 1.生成函式的ao物件 作用域 2.把函式的形參和變數宣告放到ao物...