为什么箭头函数没有参数数组?

IT技术 javascript lambda ecmascript-6 arguments anonymous-function
2021-02-08 07:56:03
function foo(x) {
   console.log(arguments)
} //foo(1) prints [1]

var bar = x => console.log(arguments) 

以相同方式调用时会出现以下错误:

Uncaught ReferenceError: arguments is not defined
1个回答

箭头函数没有这个,因为类arguments数组对象是一种解决方法,ES6 已经用一个rest参数解决了这个问题

var bar = (...arguments) => console.log(arguments);

arguments绝非保留在这里,而只是被选中。您可以随心所欲地称呼它,并且可以将其与普通参数结合使用:

var test = (one, two, ...rest) => [one, two, rest];

你甚至可以走另一条路,如这个奇特的应用所示:

var fapply = (fun, args) => fun(...args);
感谢使用 rest 运算符似乎运行良好。
2021-03-22 07:56:03
好吧,这很糟糕,我argumentsconsole.log语句中使用因此使用“其余参数”会迫使我更改函数调用签名;arguments从箭头函数中删除是一个错误的决定
2021-03-29 07:56:03
这是最好的解决方案。你最后一个奇特的例子确实让我着迷。var fapply = (fun, args) => fun(...args);
2021-04-01 07:56:03
关于休息参数如何消除对arguments对象的需要的好点子使用 rest 参数,您可以随时拥有实际的数组。不使用时没有语言开销。
2021-04-08 07:56:03
我认为在这种情况下,...arguments表示休息参数,而不是休息参数请参阅Array.of(...items),其中使用了术语“其余参数”,而在String.fromCharCode ( ...codeUnits ) 中使用了术语“其余参数”。
2021-04-09 07:56:03