語法分析
預編譯解釋執行
語法分析就是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語句。其中校驗語法,和編...