在函数定义

时间:2015-05-15 12:51:52

标签: javascript ecmascript-6

我的问题最好通过一个简单的代码示例来解释:

function doThing(a, ...b, c) {
   console.log(a, b, c)
}
doThing(1,2,3,4); // Expect "1 [2,3] 4"

而是提供语法错误Unexpected token,指向函数定义中b之后的逗号。

a' rested'之后是否无法输入单个参数 ES6参数?如果没有,任何想法为什么?这对我来说真的很有用。谢谢!

修改:我最初认为doThing(a, ...b, c)完全明确,但我现在看到doThing(1,2,3)需要一个任意规则来决定是否3进入bc(即如果我们传递一些小于或等于函数定义中的参数数量的参数)。

1 个答案:

答案 0 :(得分:1)

developer.mozilla.org说:

  

如果函数的最后一个命名参数以...为前缀,它将成为一个数组,其元素从0到theArgs.length由传递给函数的实际参数提供。

实际上,ES6的这个功能称为Rest parameters,因此它应该是参数列表中的最后一个。

所以这段代码会起作用:

function doThing(a, b, ...c) {
   console.log(a, b, c);
}
doThing(1,2,3,4);