PassFront
  1. PassFront
  2. База знаний
  3. Современный JS ES6+

Что такое rest оператор?

Современный JS ES6+

Rest-оператор (`...`) собирает несколько элементов в один массив или объект. Он «упаковывает» оставшиеся значения.

В параметрах функции

Собирает произвольное число аргументов в массив:

function sum(...numbers) {
  return numbers.reduce((acc, n) => acc + n, 0);
}
sum(1, 2, 3, 4); // 10

Rest-параметр всегда последний в списке.

При деструктуризации массива

const [first, ...rest] = [1, 2, 3, 4];
first; // 1
rest;  // [2, 3, 4]

При деструктуризации объекта

const { id, ...other } = { id: 1, name: 'Ann', age: 25 };
other; // { name: 'Ann', age: 25 }

Rest против spread

Синтаксис одинаковый (...), но смысл противоположный:

  • rest — собирает много в одно (в объявлении/параметрах).
  • spread — разворачивает одно во много (при вызове/создании).
function f(...args) {}  // rest — собирает
f(...[1, 2, 3]);        // spread — разворачивает

Коротко для собеседования

Rest-оператор ... собирает оставшиеся аргументы или элементы в массив/объект (в параметрах и деструктуризации). Он противоположность spread: rest упаковывает, spread распаковывает.

Другие вопросы раздела