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
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();