提升使用let 或const 宣告的變數
雖然使用var 宣告的變數在提升過程中的行為符合預期,但使用let或const 宣告的變數表現出不同的行為。
全部提升聲明
所有JavaScript 聲明(var、let、const、function、function*、class)都會經歷提升,這意味著它們在各自範圍內的任何位置都可以被辨識。
初始化區別
但是,var/function/function* 和 的區別let/const/class 宣告在於它們的初始化。從作用域開始時建立綁定那一刻起,Var 宣告就被初始化為 undefined。相較之下,let/const/class 宣告在其語句被求值之前保持未初始化狀態。
未初始化變數的臨時死區
此未初始化狀態創建了一個“臨時死區” “在初始化之前訪問變量會導致ReferenceError.
示例:
x = y = "global"; (function() { x; // undefined y; // Reference error: y is not defined var x = "local"; let y = "local"; }());
提升中的let 與const
Let 和const的操作方式相同的吊裝。 ,但它們在內部保持未初始化狀態。
以上是JavaScript 提升中的「let」和「const」與「var」有何不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!