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.

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 :

function test(){
   let toto = 33;
   if (true) {
      toto = (toto + 55);
   }
}
test();

Voir aussi