首頁 > web前端 > js教程 > JavaScript 中「var」、「let」和「const」之間的提升、臨時死區和初始化有何不同?

JavaScript 中「var」、「let」和「const」之間的提升、臨時死區和初始化有何不同?

Patricia Arquette
發布: 2024-12-31 07:08:09
原創
861 人瀏覽過

How Do Hoisting, the Temporal Dead Zone, and Initialization Differ Between `var`, `let`, and `const` in JavaScript?

使用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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板