預解析機制

2022-04-16 17:44:49 字數 764 閱讀 5501

js在預解析階段先找所有宣告,如果是var  先給var後的變數定乙個undefind  如果是function 就把function當做字元創賦給函式名

如果名字形同的情況function會把覆蓋var   後面function會覆蓋前面function

1. 定義

預解析:在當前作用域下,js執行之前,會把帶有var和function關鍵字的事先宣告,並在記憶體中安排好。然後再從上到下執行js語句。

預解析只會發生在通過var定義的變數和function上。

2. var

通過var關鍵字定義的變數進行預解析的時候:都是宣告declare,不管它有沒有賦值,都會賦值undefined。

1                 alert(a);   //

彈出function a()

2var a = 1;

3function a();

4 alert(a);//

彈出15

var a = 3;

6function a();

7 alert(a)//

彈出3

只要是通過var定義的,不管是變數,還是函式,都是先賦值undefined,如果是變數,也不管變數有沒有賦值,在預解析階段,都是會被賦值為undefined。

2. function

function進行預解析的時候,不僅是宣告而且還定義(define)了,但是它儲存的資料的那個空間裡面儲存的是**是字串,沒有任何意義。

JS解析器的預解析機制

預解析 函式要先定義後呼叫不是指 書寫順序 舉個栗子 函式的兩種字面量的定義方式 1 console.log add 1 console在前 function add no1,no2 function add no1,no2 函式宣告不加 console.log add 1 console語句在後結...

預解釋機制

in in num in window,判斷num是否為window這個物件的乙個屬性,是的話返回true,不是的話返回false var obj console.log name in obj true console.log eat in obj false1 預解釋的時候,不管條件是否成立,都...

淺說預解析

全域性作用域 當瀏覽器載入html頁面的時候,首先會提供乙個全域性js 執行的環境.這個環境就是全域性作用域 window var num 12 var obj function fn fn 預解析 在當前作用域中,js 執行之前瀏覽器首先會預設把所有帶var和function的進行提前的宣告或者定...