使用Let 和Const 進行變數提升
雖然使用var 宣告的變數確實會提升,但使用let 和const 宣告的變數的行為在這方面可能會令人困惑。為了解決這個困惑,讓我們分解一下發生了什麼事。
提升:JavaScript 中的一般概念
JavaScript 中的所有 變數聲明,包括var 、let、const、函數和類別聲明被提升。本質上,標識符在其聲明的作用域內可用。
x = "global"; (function() { x; // not "global" { x; // not "global" let y; // not initialized } var x = "local"; let y = "local"; });
在此範例中,所有變數宣告都在各自的作用域(函數和區塊)內提升。
臨時死區:Let 和 Const 的例外
var 聲明和let/const 聲明位於初始化中。當在作用域頂部建立綁定時,var 和其他舊式宣告會使用 undefined 或函數物件進行初始化。相較之下,let 和 const 宣告在語句執行前一直保持未初始化。
這會建立所謂的臨時死區 - 變數建立和執行之間的一段時間。它的初始化。嘗試存取此區域內的變數會導致 ReferenceError 異常。
x = y = "global"; (function() { x; // undefined y; // ReferenceError: y is not defined var x = "local"; let y = "local"; }); // Block where temporal dead zone applies
Let 和 Const 在提升方面沒有區別
let 和 const 聲明都遵循相同的提升行為。唯一的差異是 const 變數必須在宣告時初始化,且以後不能重新賦值。
以上是JavaScript 中「var」、「let」和「const」之間的提升、臨時死區和初始化有何不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!