SyntaxError: redeclaration of formal parameter "x"

Message

SyntaxError: Let/Const redeclaration (Edge)
SyntaxError: redeclaration of formal parameter "x" (Firefox)
SyntaxError: Identifier "x" has already been declared (Chrome)

Type d'erreur

Quel est le problème ?

Le même nom de variable est présent comme paramètre de la fonction et dans une affectation let au sein du corps de cette fonction et il n'est pas possible de redéclarer la même variable dans la même fonction ou dans le même bloc avec let.

Exemples

Dans le fragment de code qui suit, la variable arg redéclare l'argument passé à la fonction.

function f(arg) {
  let arg = "toto";
}

// SyntaxError: redeclaration of formal parameter "arg"

Si on souhaite changer la valeur de arg dans le corps de la fonction, c'est possible mais il ne faut pas la red√©clarer. Autrement dit, on peut retirer le mot-cl√© let. Si on souhaite plut√īt cr√©er une nouvelle variable, mieux vaudra utiliser un autre nom afin d'√©viter les conflits avec les noms des param√®tres existants.

function f(arg) {
  arg = "toto";
}

function f(arg) {
  let truc = "toto";
}

Notes de compatibilité

  • Avant Firefox 49 (Firefox 49 / Thunderbird 49 / SeaMonkey 2.46), cela provoquait une exception TypeError (bug 1275240).

Voir aussi