SyntaxError: arguments недопустим в полях
Исключение JavaScript "SyntaxError: arguments is not valid in fields" возникает, когда идентификатор arguments считывается в инициализаторе поля класса или в блоке статической инициализации, вне не-стрелочной функции.
Сообщение
SyntaxError: 'arguments' is not allowed in class field initializer or static initialization block (V8-based) SyntaxError: arguments is not valid in fields (Firefox) SyntaxError: Unexpected identifier 'arguments'. Cannot reference 'arguments' in class field initializer. (Safari)
Тип ошибки
Что пошло не так?
Выражение инициализатора поля класса или блок статической инициализации класса не имеет arguments в своей области видимости. Попытка доступа к нему является синтаксической ошибкой.
- Это справедливо, даже если
argumentsпривязан в родительской области видимости (например, когда класс вложен в не-стрелочную функцию). - Не-стрелочная функция, объявленная в этой области видимости, по-прежнему будет привязывать свой собственный
argumentsи считывать его обычным образом.
Примеры
function makeOne() {
class C {
args = { ...arguments }; // SyntaxError: arguments is not valid in fields
}
return new C();
}
let CArgs;
class C {
static {
CArgs = arguments; // SyntaxError: arguments is not valid in fields
}
}
class C {
args = {};
constructor() {
this.args = arguments; // You can use arguments in constructors
}
myMethod() {
this.args = arguments; // You can also use it in methods
}
}
function makeOne() {
const _arguments = arguments;
class C {
args = { ..._arguments }; // Only the identifier is forbidden
}
return new C();
}
Смотрите также
© 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/Arguments_not_allowed