ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript で「let」と「const」がホイストされないように見えるのはなぜですか?

JavaScript で「let」と「const」がホイストされないように見えるのはなぜですか?

DDD
リリース: 2025-01-03 02:29:40
オリジナル
328 人が閲覧しました

Why Do `let` and `const` Seem Not to Be Hoisted in JavaScript?

let または const で宣言された変数の巻き上げ

ES6 では、let または const で宣言された変数は、var.

吊り上げの神話

まず、それが重要ですlet、const、var、function、function*、class を使用するものも含め、JavaScript の

すべての宣言がホイストされることを明確にするためです。これは、これらすべての宣言が、それらが定義されているスコープ全体にわたって可視であることを意味します。

let と const の違い

重要な違いは、ホイスティングではなく、

初期化 let と const のvariables.

    var/function/function*:
  • これらの宣言は、スコープの先頭でバインディングが作成されるときに、unknown または関数自体で初期化されます。
  • let/const/class:
  • これらの宣言は、 宣言と初期化の間のこの時間的なギャップにより、ホイスティングに関する誤解が生じます。
  • 時間的デッド ゾーン

let とconst 変数の宣言と初期化の間の期間は、

時間的デッド ゾーン

として知られています。この間、変数にアクセスすると ReferenceError が発生します。

この例では、var 変数と let 変数 x と y が関数スコープの先頭で宣言されています。ただし、let 変数 y は後になるまで初期化されず、y にアクセスするとエラーがスローされる一時的なデッドゾーンが作成されます。

結論
x = y = "global";
(function() {
    console.log(x); // undefined
    console.log(y); // Reference error: y is not defined

    var x = "local";
    let y = "local";
}());
ログイン後にコピー

JavaScript のすべての宣言がホイストされる一方で、let 変数と const 変数は次のような結果を示します。異なる初期化動作。この動作により、「ホイストされていない」という認識が生じますが、実際には、遅い初期化によって作成された一時的なデッド ゾーンが原因です。 let 変数と const 変数は両方とも、ホイスティングに関しては同じように機能します。

以上がJavaScript で「let」と「const」がホイストされないように見えるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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