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 サイトの他の関連記事を参照してください。