14.5Hoisting / no-use-before-define

定義前に使用しない

変数、クラス、関数は、使用される前に定義されるべきです。これにより可読性が向上し、Temporal Dead Zone (TDZ) による `ReferenceError` を防ぎます。

コードは上から下へ読まれるのが自然です。何かを参照する前に、それが何であるかが定義されている方が、コードを読む人の認知負荷が低くなります。`let` や `const` はTDZによってこれを強制しますが、`var` や関数宣言についても、この原則に従うことで、よりクリーンで理解しやすいコードになります。

❌ Bad
// bad
console.log(a); // this will be undefined
var a = 10;

new A(); // ReferenceError
class A {}
✅ Good
// good
var a = 10;
console.log(a); // 10

class A {}
new A();