ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript の `var`、`let`、および `const` の間でホイスティング、時間的デッド ゾーン、および初期化はどのように異なりますか?

JavaScript の `var`、`let`、および `const` の間でホイスティング、時間的デッド ゾーン、および初期化はどのように異なりますか?

Patricia Arquette
リリース: 2024-12-31 07:08:09
オリジナル
862 人が閲覧しました

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 およびその他の古いスタイルの宣言は、バインディングがスコープの先頭に作成されるときに、unknown または function オブジェクトで初期化されます。対照的に、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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート