転送とTDZ


ハウステンボス、TDZホットスポット...?


ホイスティンは昇進宣言を指す.これがvar変数を先に読み込み、以下で宣言しても変数を使用できる理由です.JAvascriptの変数が宣言されると、再利用可能にするために「初期化フェーズ」にメモリにスペースを残します.
しかしvarは宣言と初期化とともに行われるがletとconstは宣言と初期化を分離することができる.すなわち、let、const変数を先に読み込み、次に宣言すると、宣言のみがハイライトされて上向きになり、初期化は下に残ります.
したがって、次の例ではReferenceErrorが表示されます.このとき、宣言されたが初期化されていない状態をTDZ(temporal dead zone)と呼ぶ.
function cat () {
  name = 'perl'; // 초기화 없이 
  console.log(name);
  let name; // 
}

  • TDZ