ReferenceError: can't access lexical declaration 'X' before initialization
Message
ReferenceError: Use before delaration (Edge) ReferenceError: can't access lexical declaration `X' before initialization (Firefox) ReferenceError: 'x' is not defined (Chrome)
Type d'erreur
ReferenceError
Quel est le problème ?
Il y a eu un accès à une variable déclarée avec let
ou const
avant que celle-ci ait été initialisée. Cela peut se produire dans n'importe quelle instruction de bloc avec une variable déclarée avec let
ou const
et qui est utilisée avant son initialisation.
Exemple
>Exemples invalides
Dans l'exemple qui suit, la variable toto
est redéclarée dans le bloc avec un second let
et elle n'est donc pas initialisée.
js
function test() {
let toto = 33;
if (true) {
let toto = toto + 55;
// ReferenceError: can't access lexical
// declaration `toto` before initialization
}
}
test();
Exemples valides
Afin que toto
puisse être modifiée au sein de l'instruction if
, on enlèvera la redéclaration dans ce bloc :
js
function test() {
let toto = 33;
if (true) {
toto = toto + 55;
}
}
test();