SyntaxError: arguments is not valid in fields
當在類欄位初始化器或靜態初始化塊中,非箭頭函式之外讀取 arguments 識別符號時,會發生 JavaScript 異常“SyntaxError: 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)
錯誤型別
SyntaxError
哪裡出錯了?
類欄位初始化器表示式或類靜態初始化塊在其作用域中不包含 arguments。嘗試訪問它會引發語法錯誤。
- 即使
arguments在父級作用域中繫結(例如當類巢狀在非箭頭函式中時),此規則也適用。 - 在此作用域內宣告的非箭頭函式仍將繫結其自己的
arguments並正常讀取它。
示例
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();
}