--- id: 587d7b88367417b2b2512b47 title: Use the Rest Operator with Function Parameters challengeType: 1 videoUrl: '' localeTitle: Используйте оператор «Отдых» с параметрами функции --- ## Description
Чтобы помочь нам создать более гибкие функции, ES6 вводит оператор останова для параметров функции. С оператором rest вы можете создавать функции, которые принимают переменное количество аргументов. Эти аргументы хранятся в массиве, доступ к которому можно получить позже изнутри функции. Проверьте этот код:
функция howMany (... args) {
return «Вы передали аргументы« + args.length + ».»;
}
console.log (howMany (0, 1, 2)); // Вы прошли 3 аргумента
console.log (howMany ("string", null, [1, 2, 3], {})); // Вы передали 4 аргумента.
Оператор rest исключает необходимость проверки массива 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 использует оператор ... spread в параметре args . 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 ```