После серии Spread Operator (Массивы и Объекты).

Сегодня мы поговорим об операторе Rest, в отличие от оператора спреда, который собирает все оставшиеся элементы в матрицу.

Например, у нас есть эта функция,

const multiply = (a, b) => {
 return a * b; 
}
multiply(1,2) // 2

Пока все хорошо, но что происходит, когда мы передаем больше аргументов, чем принимаем функцию.

умножить (1,2,3), результатом всегда будет 2, потому что в Javascript мы можем вызывать функции с нужными нам элементами, но в этом случае будут учитываться только первые два элемента.

Вот и в игру вступает наш друг Rest Operator.

Мы можем переписать предыдущую функцию как

const multiply = (...args) => {
  let result = 1;
  for (let i in args) {
     result = result * args[i];
  } 
  return result;
};

И теперь мы можем передать все аргументы, которые захотим.

multiply(1,2) // 2
multiply(2,2,2) // 8
multiply(3,2,1,2) // 12

Но у нас есть ограничения на использование, если у нас есть функция с большим количеством аргументов, например, оператор Rest всегда должен идти в последней позиции.

const multiply = (x,y,...args) => {
  console.log(x);
  console.log(y);
  let result = 1;
  for (let i in args) {
     result = result * args[i];
  } 
  return result;
};
multiply(2,2,2) // 2 2 4
multiply(2,2,2,2) // 2 2 8

Большое спасибо и продолжайте кодировать!!!

Йоэль

Я часто делюсь советами по программированию в моем Instagram, вы можете поздороваться со мной в моем Twitterили посмотреть, как я программирую в моем Гитхаб.