SyntaxError: setter functions must have one argument
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 Funktionssyntax 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 sein, aber er kann kein Restparameter sein.
Beachten Sie, dass dieser Fehler nur für Eigenschafts-Setter gilt, die die set
-Syntax verwenden. Wenn Sie den Setter mithilfe von Object.defineProperty()
, etc. definieren, wird der Setter als normale Funktion definiert, obwohl es wahrscheinlich immer noch ein Fehler ist, wenn der Setter eine andere Anzahl von Argumenten erwartet, da er mit genau einem aufgerufen wird.
Beispiele
Ungültige Fälle
const obj = {
set value() {
this._value = Math.random();
},
};
Gültige Fälle
// 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();
},
};