Что такое rest оператор?
Современный JS ES6+
Rest-оператор (`...`) собирает несколько элементов в один массив или объект. Он «упаковывает» оставшиеся значения.
В параметрах функции
Собирает произвольное число аргументов в массив:
function sum(...numbers) {
return numbers.reduce((acc, n) => acc + n, 0);
}
sum(1, 2, 3, 4); // 10Rest-параметр всегда последний в списке.
При деструктуризации массива
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 распаковывает.