Hoisting とは、コードが実行される前のコンパイルフェーズで、JavaScript が宣言をそのスコープの先頭へ移動させる挙動のことです。ただし、どのように hoisting されるかは宣言の種類によって異なります。
js
console.log(a); // undefined — `var a` is hoisted & initialized to undefined
var a = 1;
foo(); // "works!" — function declarations are fully hoisted
function foo() { console.log("works!"); }
console.log(b); // ❌ ReferenceError — temporal dead zone
b = ;
何が、どのように hoisting されるか
なぜ重要なのか
Hoisting は「なぜこれが undefined なのか?」や「なぜ定義より前にこの関数を呼べるのか?」を説明します。let/const の TDZ は実際には 機能 です — 静かな undefined のバグを大きなエラーへと変え、使う前に宣言することを促します。
