--- id: 587d7b88367417b2b2512b47 title: Use the Rest Operator with Function Parameters challengeType: 1 videoUrl: '' localeTitle: 将Rest运算符与函数参数一起使用 --- ## Description
为了帮助我们创建更灵活的函数,ES6引入了函数参数的rest运算符 。使用rest运算符,您可以创建带有可变数量参数的函数。这些参数存储在一个数组中,以后可以从函数内部访问。看看这段代码:
function howMany(... args){
返回“你已经通过”+ args.length +“arguments。”;
}
console.log(howMany(0,1,2)); //你已经传递了3个参数
console.log(howMany(“string”,null,[1,2,3],{})); //你已经传递了4个参数。
其余运算符无需检查args数组,并允许我们在args数组上应用map()filter()reduce()
## Instructions
修改函数sum ,使其使用rest运算符,并以相同的方式使用任意数量的参数。
## Tests
```yml tests: - text: 'sum(0,1,2)的结果应为3' testString: 'assert(sum(0,1,2) === 3, "The result of sum(0,1,2) should be 3");' - text: 'sum(1,2,3,4)的结果应为10' testString: 'assert(sum(1,2,3,4) === 10, "The result of sum(1,2,3,4) should be 10");' - text: sum(5)的结果应为5 testString: 'assert(sum(5) === 5, "The result of sum(5) should be 5");' - text: sum()的结果应为0 testString: 'assert(sum() === 0, "The result of sum() should be 0");' - text: sum函数在args参数上使用... spread运算符。 testString: 'getUserInput => assert(getUserInput("index").match(/function\s+sum\s*\(\s*...args\s*\)\s*{/g), "The sum function uses the ... spread operator on the args parameter.");' ```
## Challenge Seed
```js const sum = (function() { "use strict"; return function sum(x, y, z) { const args = [ x, y, z ]; return args.reduce((a, b) => a + b, 0); }; })(); console.log(sum(1, 2, 3)); // 6 ```
## Solution
```js // solution required ```