js高階詞法分析

2021-07-07 02:11:11 字數 319 閱讀 1069

分析乙個js函式,首先從引數開始,函式在執行前首先生成active object物件(活動物件,下面簡稱為ao)用來儲存函式變數。

第一步: 分析引數,ao把引數名當作為自己屬性,初始值都為undefined,傳遞過來的引數值即為屬性值。

第二步: 分析函式內宣告的變數,即var宣告,如果引數內沒有var宣告的變數名,則把此變數新增到ao的屬性,值為undefined。如果引數內有var宣告的變數名,則不做任何改                      變。

第三步: 分析函式內部的函式宣告,把函式內部的函式名新增到ao的屬性,值為宣告的函式,如果此前該屬性已存在則被覆蓋。

js詞法分析

在函式執行時,會先進行詞法分析 預編譯 預編譯做哪些工作?1 分析引數 2 分析變數宣告 3 分析函式宣告 如何分析變數宣告?答 對於var 宣告的變數,以var str local 為例,分為分析過程 和 執行過程.先分析,後執行.先分析 var str 即僅僅宣告乙個str變數,str變數此時,...

js作用域和詞法分析

都知道js中不存在類似於c 等語言的塊級作用域,例如for迴圈中定義的變數,其實是屬於當前物件下的屬性,同一物件下可以隨便訪問。只有函式可以限定乙個變數的作用範圍,即函式才是變數的作用域。對於函式的變數訪問時遵循作用域鏈的,即當前函式執行時會有乙個當前作用域,當飲用某個變數時,會先查詢當前作用域內是...

JS詞法結構

程式語言的詞法結構是一套基礎性規則,用來描述如何使用這門語言來編寫程式。注釋直接量 識別符號和保留字 分號js程式採用unicode字符集編寫,unicode是ascii和latin 1的超集,並支援地球上幾乎所有在用的語言。js是區分大小寫的語言,也就是說,關鍵字 變數 函式名 識別符號 iden...