Что такое spread оператор?
Современный JS ES6+
Spread-оператор (`...`) разворачивает итерируемое (массив, строку) или свойства объекта в отдельные элементы. Он «распаковывает» значения.
Копирование и объединение массивов
const arr = [1, 2, 3];
const copy = [...arr]; // поверхностная копия
const merged = [...arr, 4, 5]; // [1, 2, 3, 4, 5]Копирование и слияние объектов
const user = { name: 'Ann' };
const extended = { ...user, age: 25 }; // { name: 'Ann', age: 25 }
const patched = { ...user, name: 'Bob' }; // перезапись поляПередача массива как аргументов
const nums = [5, 1, 8];
Math.max(...nums); // 8Копия поверхностная
Вложенные объекты остаются общими ссылками:
const original = { nested: { x: 1 } };
const copy = { ...original };
copy.nested.x = 99;
original.nested.x; // 99 — общий вложенный объектДля глубокой копии нужен structuredClone.
Spread против rest
- spread — разворачивает одно во множество (при вызове/создании).
- rest — собирает множество в одно (в параметрах/деструктуризации).
Коротко для собеседования
Spread ... распаковывает массив/объект в отдельные элементы: копирование, слияние, передача аргументов. Копия поверхностная — вложенные объекты общие. Противоположность rest.