」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > JavaScript 提升中 `let` 和 `const` 與 `var` 有何不同?

JavaScript 提升中 `let` 和 `const` 與 `var` 有何不同?

發佈於2024-12-21
瀏覽:359

How Do `let` and `const` Differ from `var` in JavaScript Hoisting?

用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 在提升方面的操作相同。它們之間的區別在於,常量必須始終在聲明時賦值。

結論

用 let 或 const 宣告的變數會被提升,但它們在內部保持未初始化狀態。暫時的死區,直到處理其聲明語句。過早訪問它們將導致引用錯誤。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3