SyntaxError: 'arguments'/'eval' can't be defined or assigned to in strict mode code

JavaScript 嚴格模式下特有的異常“在嚴格模式程式碼中不能定義或賦值給‘arguments’”或“在嚴格模式程式碼中不能定義或賦值給‘eval’”發生在嘗試建立名為 argumentseval繫結,或對這些名稱進行賦值時。

訊息

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

哪裡出錯了?

在嚴格模式下,名稱 argumentseval 的行為如同它們是保留字:你不能讓它們指向函式中的 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);
}

另見