let または const で宣言された変数のホイスティング
var で宣言された変数はホイスティング中に期待どおりに動作しますが、let または const で宣言された変数は問題を示します動作が異なります。
すべてのホイスト宣言
すべての JavaScript 宣言 (var、let、const、function、function*、class) はホイスティングされます。つまり、それぞれのスコープ内のどこでも認識可能です。
初期化の違い
ただし、var/function/function* とlet/const/class 宣言は初期化にあります。 var 宣言は、スコープの開始時にバインディングが作成された瞬間から、unknown で初期化されます。対照的に、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 で宣言された変数はホイストされますが、内部では初期化されないままになります。宣言ステートメントが処理されるまでの一時的なデッドゾーン。時期尚早にアクセスすると ReferenceError が発生します。
以上がJavaScript ホイスティングにおける「let」と「const」は「var」とどう違うのですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。