SyntaxError: 'arguments'/'eval' can't be defined or assigned to in strict mode code
JavaScript 嚴格模式下特有的異常“在嚴格模式程式碼中不能定義或賦值給‘arguments’”或“在嚴格模式程式碼中不能定義或賦值給‘eval’”發生在嘗試建立名為 arguments 或 eval 的繫結,或對這些名稱進行賦值時。
訊息
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)
錯誤型別
SyntaxError
哪裡出錯了?
在嚴格模式下,名稱 arguments 和 eval 的行為如同它們是保留字:你不能讓它們指向函式中的 arguments 物件或全域性的 eval 函式以外的任何東西。
示例
無效案例
js
"use strict";
const arguments = [1, 2, 3];
console.log(Math.max(...arguments));
function foo(...arguments) {
console.log(arguments);
}
有效情況
js
"use strict";
const args = [1, 2, 3];
console.log(Math.max(...args));
function foo(...args) {
console.log(args);
}