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

时间:2017-01-19 00:32:08

标签: javascript lambda ecmascript-6 arguments anonymous-function

function foo(x) {
   console.log(arguments)
} //foo(1) prints [1]

但是

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

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

Uncaught ReferenceError: arguments is not defined

1 个答案:

答案 0 :(得分:92)

箭头函数没有这个,因为arguments类似数组的对象是一个开始的解决方法,ES6已使用rest参数解决了这个问题:

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

arguments绝不是留在这里,而是选择了。您可以随意调用它,它可以与正常参数结合使用:

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

你甚至可以走另一条路,用这个奇特的例子说明:

var fapply = (fun, args) => fun(...args);