ReferenceError: Cannot access ‘x’ before initialization

Cannot access 'x' before initialization JavaScript hiba: Temporal Dead Zone fogalma és javítása.

Cannot access before initialization

Hibaüzenet

ReferenceError: Cannot access 'x' before initialization

Hibás kód

console.log(x);
let x = 5;

Javított kód

let x = 5;
console.log(x);

Magyarázat

Cannot access ‘x’ before initialization hiba akkor fordul elő, amikor a modern JavaScript Temporal Dead Zone (TDZ) szabályai szerint próbálsz elérni egy blokkszintű változót (`let`/`const`) a deklarálása előtt. A hoisting csak a deklarációt, nem pedig az inicializálást emeli a blokk tetejére, így az előtti hivatkozás hibát okoz. A megoldás, hogy a változó használata megelőzze a deklarációt, vagy `var`-t használj, ha valóban hoisting szükséges, de a legjobb gyakorlat a blokkszintű deklaráció és használat sorrendjének betartása.

További információ: MDN – Temporal Dead Zone