巻き上げ(Hoisting)
`var`宣言は巻き上げられますが、代入は巻き上げられません。`const`と`let`にはTemporal Dead Zone (TDZ)という新しい概念があり、宣言前にアクセスすると`ReferenceError`がスローされます。
巻き上げとは、`var`宣言や関数宣言が、そのスコープの先頭に「引き上げられて」解釈されるJavaScriptの挙動です。これにより、`var`変数は宣言前に `undefined` として存在します。`let` と `const` は巻き上げられますが、初期化されるまではTDZにあり、アクセスがブロックされます。このTDZの仕組みにより、`var`よりも安全で予測しやすいコードが書けます。