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

Javascript 为什么箭头函数没有参数数组?,javascript,lambda,ecmascript-6,arguments,anonymous-function,Javascript,Lambda,Ecmascript 6,Arguments,Anonymous Function,但是 以相同方式调用时给出以下错误: var bar = x => console.log(arguments) Arrow函数没有这个功能,因为类似数组的参数对象是一个解决方案,ES6使用rest参数解决了这个问题: Uncaught ReferenceError: arguments is not defined 参数在这里绝对不是保留的,而是选择的。您可以随意调用它,它可以与普通参数结合使用: var bar = (...arguments) => console.log

但是

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

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

Arrow函数没有这个功能,因为类似数组的
参数
对象是一个解决方案,ES6使用
rest
参数解决了这个问题:

Uncaught ReferenceError: arguments is not defined
参数
在这里绝对不是保留的,而是选择的。您可以随意调用它,它可以与普通参数结合使用:

var bar = (...arguments) => console.log(arguments);
你甚至可以走另一条路,如下所示:

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

它不是匿名函数,而是没有
参数的箭头函数。所以,你的问题是做出了错误的陈述/假设。使用
函数
关键字声明的常规匿名函数的
参数
对象很好。有关语言设计决策的问题通常不适合堆栈溢出。@FelixKling。对不起,我与你的想法相反。这个问题的答案有助于消除许多其他人的“问号”。我相信,问一个看起来“不适合”堆栈溢出的问题从来都不是坏事。@daiyanze:这不是问题本身,而是谁能回答它。特别是对于JavaScript,语言设计问题只能由实际参与设计过程的人或密切关注设计过程的人来回答。这样的人不多,而且堆栈溢出的人更少。通过直接联系相关人员,您可能会更成功地获得答案(如果更多人感兴趣的话,可以在这里发布一个自我回答的问题)。关于rest参数如何避免使用
参数
对象,这是一个很好的观点。使用rest参数,您可以在任何实际需要的时候拥有一个实际数组。位不使用时没有语言开销。感谢使用rest运算符似乎效果很好。我认为在此上下文中,
…arguments
表示rest参数,而不是rest参数。看看哪里使用了术语“rest参数”,而在术语中使用了“rest参数”。这是最好的解决方案。你最后一个奇特的例子确实令我着迷。var fapply=(fun,args)=>fun(…args);这太糟糕了,我在
控制台中使用
参数
。log
语句,因此使用“rest参数”会迫使我更改函数调用签名;从arrow函数中删除
参数
是一个错误的决定。
var test = (one, two, ...rest) => [one, two, rest];
var fapply = (fun, args) => fun(...args);