ReferenceError: can't access lexical declaration 'X' before initialization

We’d love to hear your thoughts on the next set of proposals for the JavaScript language. You can find a description of the proposals here.
Please take two minutes to fill out our short survey.

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

Voir aussi