SyntaxError: arguments ist in Feldern nicht gültig

Die JavaScript-Ausnahme "SyntaxError: arguments ist in Feldern nicht gültig" tritt auf, wenn der arguments-Bezeichner in einem Klassenfeld-Initializer oder in einem statischen Initialisierungsblock außerhalb einer nicht-Pfeilfunktion gelesen wird.

Nachricht

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)

Fehlertyp

Was ist schiefgelaufen?

Ein Klassenfeld-Initialisierungs-Ausdruck oder ein statischer Klassen-Initialisierungsblock hat arguments nicht in seinem Gültigkeitsbereich. Der Versuch, darauf zuzugreifen, führt zu einem Syntaxfehler.

  • Dies gilt auch, wenn arguments in einem übergeordneten Gültigkeitsbereich gebunden ist (zum Beispiel, wenn die Klasse in einer nicht-Pfeilfunktion geschachtelt ist).
  • Eine innerhalb dieses Gültigkeitsbereichs deklarierte nicht-Pfeilfunktion bindet weiterhin ihre eigenen arguments und liest sie normal.

Beispiele

js
function makeOne() {
  class C {
    args = { ...arguments }; // SyntaxError: arguments is not valid in fields
  }
  return new C();
}
js
let CArgs;
class C {
  static {
    CArgs = arguments; // SyntaxError: arguments is not valid in fields
  }
}
js
class C {
  args = {};
  constructor() {
    this.args = arguments; // You can use arguments in constructors
  }
  myMethod() {
    this.args = arguments; // You can also use it in methods
  }
}
js
function makeOne() {
  const _arguments = arguments;
  class C {
    args = { ..._arguments }; // Only the identifier is forbidden
  }
  return new C();
}

Siehe auch