SyntaxError: doppeltes formales Argument x

Die JavaScript-Ausnahme "duplicate formal argument x" oder "duplicate argument names not allowed in this context" tritt auf, wenn eine Funktion zwei oder mehr Parameterbindungen mit demselben Namen erstellt und die Funktion keine non-strict Funktion mit nur einfachen Parametern ist.

Meldung

SyntaxError: Duplicate parameter name not allowed in this context (V8-based)
SyntaxError: duplicate formal argument x (Firefox)
SyntaxError: duplicate argument names not allowed in this context (Firefox)
SyntaxError: Cannot declare a parameter named 'x' in strict mode as it has already been declared. (Safari)
SyntaxError: Duplicate parameter 'x' not allowed in function with default parameter values. (Safari)
SyntaxError: Duplicate parameter 'x' not allowed in function with a rest parameter. (Safari)
SyntaxError: Duplicate parameter 'x' not allowed in function with destructuring parameters. (Safari)

Fehler-Typ

Was ist schiefgelaufen?

Zwei formale Parameter mit demselben Namen zu haben, ist wahrscheinlich ein Fehler - das zweite Vorkommen würde das erste Vorkommen unzugänglich durch den Parameternamen machen. In legacy JavaScript war dies erlaubt. Um bestehende Codes nicht zu zerstören, ist dies nur ein Fehler, wenn der Code garantiert keine legacy ist - entweder weil er im strict mode ist oder moderne Parametersyntax verwendet (rest, default, oder destructured Parameter).

Beispiele

Ungültige Fälle

js
"use strict";

function add(x, x) {
  // How can you access both "x" parameters?
  // SyntaxError: duplicate formal argument x
}
js
function doSomething(name, { name }) {
  // How can you access both "name" parameters?
  // SyntaxError: duplicate argument names not allowed in this context
}

Gültige Fälle

js
function doSomething(operationName, { name: userName }) {
  // You can access both "operationName" and "userName" parameters.
}

function doSomething(name, user) {
  // You can access both "name" and "user.name" parameters.
}

Siehe auch