JS變數宣告提公升

2022-09-16 00:24:24 字數 617 閱讀 1932

js的變數作用域是離它最近的封閉語塊或**塊,包含他們內部的函式.

在**塊中宣告會被隱式的提公升到封閉函式的頂部

1

function()6

var y=1;

7 }

上面的**會被js解釋成下面的格式

1 function

()8 }

有時候我們會不小心的在函式內部重新宣告了已有的變數

function

text(x)

}

如果我們把變數的宣告和賦值看做兩部份,就會比較好理解js (如var x=0;看做var x; x=0;) 根據隱式提公升規則

function

text(函式傳入的值)

}

特殊情況 js的異常捕獲catch(x){} x的作用域僅在catch語塊內

function

test()

catch

(x)result.push(x);

return

result;

}test();

//["var", "catch", "var"]

JS變數宣告和函式宣告提公升

很多時候,在直覺上,我們都會認為js 在執行時都是自上而下一行一行執行的,但是實際上,有一種情況會導致這個假設是錯誤的。a 2 var a console.log a 按照傳統眼光,console.log a 輸出的應該是undefined,因為var a在a 2之後。但是,輸出的是2。再看第二段 ...

JS中的變數宣告提公升

js是一種指令碼語言,和一些高階語言不同,它沒有完整編譯的過程,一般是邊寫邊編譯,這也是我們覺得指令碼語言比其他語言載入快的原因,其實,js中有變數宣告提公升這一機制。當js在執行的時候會分為2個階段,預解析,執行,當js在執行的時候會將所有用var宣告的變數以及關鍵字定義的函式進行提公升 func...

JS 宣告提公升

一 js解析機制 遇到 script 標籤的話 js 就進行預解析,將變數 var 和 function 宣告提公升,但不會執行 function,然後就進入上下文執行,上下文執行還是執行預解析同樣操作,直到沒有 var 和 function,就開始執行上下文。二 宣告提公升 函式宣告和變數宣告總是...