JS預編譯原理

2022-07-01 20:24:13 字數 687 閱讀 5970

一 預編譯之前基本概念:

1  函式形參(parameter)和實參(argument)的區別:形參相當於函式中定義的變數,實參是在執行時的函式呼叫時傳入的引數。即:形參就是函式宣告時的變數,實參是我們呼叫該函式時傳入的具體引數。

1

function

add(a, b) ;

4 add(1, 2) //

1,2就是實參

2 js變數名與函式重名問題:

注意:函式作用域是首先從內部查詢,由里向外順序查詢.

二 js預編譯過程:

js執行**共分三步

1. 語法分析,語法分析就是瀏覽器先瀏覽一下整體的**有沒有少寫分號、單詞拼錯等語法的錯誤。

2. js預編譯。本質是建立ao物件或go物件,對其屬性的操作。預編譯發生在函式執行前一刻。

3. 解釋性執行。就是一行一行的讀取**執行**。

全域性域解析:go:gobel object,是全域性物件,go物件跟window物件是同乙個物件。可以理解為window物件有兩個名字 window == go。 

函式js預編譯:ao物件:activation object,指活動性物件,也叫執行期上下文,就是我們通常所說的作用域。這裡指函式的區域性作用域。預編譯時ao物件的屬性對應的屬性值,會在後續**執行過程中發生變化,也就是會被覆蓋。

語法分析常見錯誤分析:

js 預編譯原理簡單理解

js執行三部曲 1 語法解析 語義分析 通篇掃瞄檢視語法是否有誤。如少了或多了乙個括號 2 預編譯 3 釋放執行上下文 預編譯 預編譯會發生在函式執行的前一刻 預編譯過程有四步 1 生成乙個ao物件 activation object 執行期上下文 其實執行期上下文是函式執行時產生的儲存庫 作用域 ...

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

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

JS 函式預編譯

1 語法分析 2 預編譯 3 解釋執行 預編譯四部曲 1.函式在執行的瞬間,生成乙個執行期上下文 active object 簡稱ao 2.分析引數 2.1 函式接收形式引數,新增到ao的屬性,並且這個時候值為undefine,例如ao.age undefined 2.2 接收實參,新增到ao的屬性...