Spread Оператор¶
Основная задача spread оператора - это распространить элементы массива или объекта. Проще всего объяснить на примере.
Apply¶
Популярный кейс - это распространение массива в аргументы функции. Раньше вы использовали для этого Function.prototype.apply:
1 2 3 | |
Сейчас вы можете сделать это, просто поставив ... перед аргументами:
1 2 3 | |
Здесь мы распространили массив args в аргументы функции.
Деструктурирование¶
Мы уже видели вариант использования этого оператора в деструктурировании:
1 2 | |
Мотивация здесь в том, чтобы упростить захватывание оставшихся элементов массива.
Присваивание массива¶
Spread оператор позволяет легко создавать расширенную версию массива в другом массиве. Это показано на примере ниже:
1 2 3 | |
Вы можете поставить расширенный массив в любом месте и получить ожидаемый результат:
1 2 3 | |
Распространение объекта¶
Вы можете распространить один объект в другой объект. Общий случай использования - это простое добавление свойства к объекту без изменения оригинального объекта:
1 2 3 | |
Для объектов положение spread оператора имеет значение. Это работает как Object.assign: то, что приходит первым, "переопределяется" тем, что приходит позже:
1 2 3 4 5 | |
Другим распространенным вариантом использования является простое поверхностное расширение:
1 2 3 4 5 | |
Заключение¶
apply - это то, что вы часто используете в JavaScript, поэтому хорошо иметь удобный синтаксис, при котором у вас нет необходимости использовать null для this аргумента. Кроме того, наличие выделенного синтаксиса для перемещения массивов из (деструктурирование) или в (назначение) другие массивы обеспечивает аккуратный код, когда вы выполняете обработку массивов на их частях.