JS的解析與執行 全域性預處理

2021-08-13 11:16:14 字數 625 閱讀 9684

js的的解析與執行主要分為兩個階段,一是預處理階段,二是執行階段。js**的執行並不是讀取一行**處理一行**。在正式執行**這個階段之前有乙個預處理階段。在預處理階段,我們人為分成全域性**和函式內部**。因為兩者有少許差別,因此我們分開講解。今天我們主要講全域性預處理。

全域性預處理就的第一步是建立lexical environment(詞法環境)物件。第二步是掃瞄全域性的js**裡面的兩部內容(用宣告的方式建立的函式和用var定義的變數)。通常是先掃瞄函式宣告後掃瞄var宣告的變數。第三步將掃瞄到的內容新增到lexical environment中。

什麼是用宣告的方式建立的函式呢?舉個栗子。

在瀏覽器中,lexicalenvironment === window。

既全域性預處理階段會把用宣告的方式建立的函式和用var宣告的變數加入到lexical environment中。例如:

全域性預處理與執行,作用域與作用域鏈

一.全域性預處理 全域性預處理 首先會建立乙個詞法環境 lexical environment 然後掃面全域性裡用var宣告的變數和 用宣告的方式建立的函式即function 函式表示式即var q function 掃瞄後把變數存入寫成 a undefined 把函式寫成 指向函式或對函式的乙個引...

js的解析與執行過程

當輸入如下 時候 var a 1 function crli crli 1結果為 1 當改變下面 時候 var a 1 function crli crli undefined結果為 undefined 這是為什麼呢?js解析與執行過程一共有2個階段,乙個預處理階段,乙個是執行階段 可以看成全域性預...

JS 1 解析與執行

js執行會分為2段,第一段是預處理階段,在window中,第二階段是執行階段,賦值 一 js全域性預處理階段,會載入 1 用宣告的方式建立函式 2 用var定義的變數 舉例 f g var g function 函式表示式 報錯 function f 宣告的方式 console.log a cons...