SyntaxError: Setterfunktionen müssen ein Argument haben
Der JavaScript-Ausnahmefehler "setter functions must have one argument" tritt auf, wenn ein Setter deklariert wird und die Parameterliste nicht genau ein formales Parameter enthält.
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 werden oder einen Standardwert haben, aber er kann kein Restparameter sein.
Beachten Sie, dass dieser Fehler nur für Property-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 von Argumenten erwartet, da er mit genau einem Argument 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();
},
};