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

Что такое 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.

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