SyntaxError: 'arguments'/'eval' können im Strict-Mode-Code nicht definiert oder zugewiesen werden
Die JavaScript-Strict-Mode-nur-Ausnahme "'arguments' können im Strict-Mode-Code nicht definiert oder zugewiesen werden" oder "'eval' können im Strict-Mode-Code nicht definiert oder zugewiesen werden" tritt auf, wenn versucht wird, eine Bindung namens arguments
oder eval
zu erstellen oder einem solchen Namen etwas zuzuweisen.
Nachricht
SyntaxError: Unexpected eval or arguments in strict mode (V8-based) SyntaxError: 'arguments' can't be defined or assigned to in strict mode code (Firefox) SyntaxError: Cannot modify 'arguments' in strict mode. (Safari) SyntaxError: Cannot destructure to a parameter name 'arguments' in strict mode. (Safari) SyntaxError: Cannot declare a variable named arguments in strict mode. (Safari) SyntaxError: Cannot declare a catch variable named 'arguments' in strict mode. (Safari) SyntaxError: 'arguments' is not a valid function name in strict mode. (Safari)
Fehlerart
Was ist schiefgelaufen?
Im Strict-Mode verhalten sich die Namen arguments
und eval
so, als ob sie reservierte Wörter wären: Sie können nicht bewirken, dass sie auf etwas anderes als das arguments
-Objekt in Funktionen oder die globale eval
-Funktion verweisen.
Beispiele
Ungültige Fälle
js
"use strict";
const arguments = [1, 2, 3];
console.log(Math.max(...arguments));
function foo(...arguments) {
console.log(arguments);
}
Gültige Fälle
js
"use strict";
const args = [1, 2, 3];
console.log(Math.max(...args));
function foo(...args) {
console.log(args);
}