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
аргумента. Кроме того, наличие выделенного синтаксиса для перемещения массивов из (деструктурирование) или в (назначение) другие массивы обеспечивает аккуратный код, когда вы выполняете обработку массивов на их частях.