Spread syntax
Три точки раскрывают массив или объект на отдельные элементы.
Доступно с: ES2015
Синтаксис
[...iterable] / { ...object } / fn(...args)Примеры
Копирование и объединение массивов:
const a = [1, 2];
const b = [3, 4];
console.log([...a, ...b, 5].join(', '));Результат:
1, 2, 3, 4, 5Копия объекта с изменённым полем:
const user = { name: 'Anna', city: 'Berlin' };
const moved = { ...user, city: 'Paris' };
console.log(moved.city, user.city);Результат:
Paris BerlinМассив как список аргументов:
const numbers = [5, 1, 9];
console.log(Math.max(...numbers));Результат:
9Примечания
Копия поверхностная: вложенные объекты остаются общими. При одинаковых ключах побеждает тот, что записан позже.
Те же три точки в параметрах функции или в деструктуризации означают обратное — сбор в массив (rest).
См. также
- Rest parameters — Собирает оставшиеся аргументы функции в массив.
- Destructuring assignment — Достаёт значения из массива или объекта в отдельные переменные.
- Array.prototype.concat — Объединяет массивы в новый массив.
- Object.assign — Копирует свойства из одних объектов в другой.
В учебнике
- Операторы spread и rest — Три точки в JavaScript — раскрытие массивов и объектов, копирование, объединение и остаточные параметры.