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.
が発生します。免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3