JS之預編譯 詳解

2021-09-13 23:41:47 字數 1257 閱讀 1020

語法分析

預編譯解釋執行

語法分析就是js引擎去檢查你的**是否有語法錯誤,解釋執行顧名思義就是執行你的**。當然最重要的還是預編譯,那麼預編譯是在什麼時候開始發生呢?,接下來就是重點了。

首先要明白什麼是函式宣告?,什麼是變數賦值?

functiona(

)//函式宣告

vara

=function()

//變數賦值(函式表示式)

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

建立ao物件(activation object)(執行上下文);

找函式形參和函式內變數宣告,將形參名和變數名作為ao物件的屬性名,值為undefined;

將實參值和形參統一,實參值賦給形參;

在函式體裡面找函式宣告,值賦予函式體。

請看下面這個例子:

function

fn(a)

//函式宣告

console.

log(a)

;varb=

function()

//變數賦值(函式表示式)

console.

log(b)

;functiond(

)//函式宣告}fn

(1);

輸出結果:

解題步驟:

第一步:宣告乙個ao物件(activation object)(執行上下文),執行上下文就是由於這個函式執行產生的乙個儲存空間庫;

ao

第二步: 找函式形參和函式內變數宣告,將形參名和變數名作為ao物件的屬性名,值為undefined;

ao

第三步:將實參值和形參值統一(也就是說把實參值傳到形參中)

ao

第四步:在函式體裡面找函式宣告,值賦予函式體

ao

,//函式體

b:undefined,

//變數b

d:functionb(

)//函式體

}

接下來就是函式執行,函式執行要按照順序來,也就是一行一行的執行。

JS預編譯 函式預編譯和全域性預編譯

預編譯發生在函式執行前一步 建立ao物件 執行期上下文 找形參和變數宣告,將變數和形參名作為ao 屬性名,值為undefined 將實參值和形參統一 在函式體裡面找函式宣告,值賦予函式體 結果 預編譯過程 函式馬上要執行,但是還沒執行 首先建立ao物件,也就是函式它產生的儲存空間庫 ao,b und...

JS學習筆記 之 預編譯

1.imply global 暗示全域性變數 任何變數,未經宣告就賦值,此變數為全域性物件 window 所有 例 a 10 window.a 10 不管此變數是在全域性賦值的,還是區域性賦值的 2.一切宣告的全域性變數都是window的屬性 window即全域性的 var b 123 window...

mysql 預編譯 MySQL預編譯功能詳解

1 預編譯的好處 大家平時都使用過jdbc中的preparedstatement介面,它有預編譯功能。什麼是預編譯功能呢?它有什麼好處呢?當客戶傳送一條sql語句給伺服器後,伺服器總是需要校驗sql語句的語法格式是否正確,然後把sql語句編譯成可執行的函式,最後才是執行sql語句。其中校驗語法,和編...