SyntaxError: Setter-Funktionen müssen ein Argument haben

Die JavaScript-Ausnahme "setter functions must have one argument" tritt auf, wenn ein Setter deklariert wird und die Parameterliste nicht genau aus einem formalen Parameter besteht.

Nachricht

SyntaxError: Setter must have exactly one formal parameter. (V8-based)
SyntaxError: Setter function argument must not be a rest parameter (V8-based)
SyntaxError: setter functions must have one argument (Firefox)
SyntaxError: Unexpected token ','. setter functions must have one parameter. (Safari)
SyntaxError: Unexpected token '...'. Expected a parameter pattern or a ')' in parameter list. (Safari)

Fehlerart

Was ist schiefgelaufen?

Die set-Eigenschaftssyntax sieht aus wie eine Funktion, ist aber strenger und nicht alle Funktionssyntaxe ist erlaubt. Ein Setter wird immer mit genau einem Argument aufgerufen, daher ist es wahrscheinlich ein Fehler, ihn mit einer anderen Anzahl von Parametern zu definieren. Dieser Parameter kann destrukturiert oder mit einem Standardwert versehen werden, jedoch nicht als Restparameter definiert werden.

Beachten Sie, dass dieser Fehler nur für Eigenschafts-Setter gilt, die die set-Syntax verwenden. Wenn Sie den Setter mit Object.defineProperty() usw. definieren, wird der Setter als normale Funktion definiert, obwohl es wahrscheinlich immer noch ein Fehler ist, wenn der Setter eine andere Anzahl an Argumenten erwartet, da er mit genau einem aufgerufen wird.

Beispiele

Ungültige Fälle

js
const obj = {
  set value() {
    this._value = Math.random();
  },
};

Gültige Fälle

js
// You must declare one parameter, even if you don't use it
const obj = {
  set value(_ignored) {
    this._value = Math.random();
  },
};

// You can also declare a normal method instead
const obj = {
  setValue() {
    this._value = Math.random();
  },
};

Siehe auch