SyntaxError: функции-сеттеры должны иметь один аргумент
Исключение JavaScript "setter functions must have one argument" возникает, когда объявлен сеттер и список его параметров не состоит ровно из одного формального параметра.
Сообщение
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)
Тип ошибки
Что пошло не так?
Синтаксис свойства set похож на функцию, но он более строг, и не весь синтаксис функции разрешен. Сеттер всегда вызывается ровно с одним аргументом, поэтому определение его с любым другим числом параметров, вероятно, является ошибкой. Этот параметр может быть деструктурирован или иметь значение по умолчанию, но он не может быть остаточным параметром.
Обратите внимание, что эта ошибка применима только к сеттерам свойств, использующим синтаксис set. Если вы определяете сеттер, используя Object.defineProperty() и т. д., сеттер определяется как обычная функция, хотя это, вероятно, все равно ошибка, если сеттер ожидает любое другое количество аргументов, поскольку он будет вызван ровно с одним.
Примеры
Недопустимые примеры
const obj = {
set value() {
this._value = Math.random();
},
};
Допустимые примеры
// 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();
},
};
Смотрите также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Setter_one_argument