JS: Функции
Теория: Оператор Spread (распаковка аргументов)
spread-оператор в вызовах функций синтаксически идентичен rest-оператору в определениях, но выполняет обратное действие. Посмотрим на примере функции sum():
Вызовем sum(), применив spread-оператор к массиву аргументов:
spread-оператор раскладывает массив на аргументы. Количество аргументов, полученных spread-оператором, равно количеству элементов массива. По сути, код выше преобразуется в вызов:
Как и в случае с определением функций, spread-оператор может использоваться совместно с позиционными аргументами:
В отличие от rest-оператора в определении функций, spread-оператор не обязательно должен быть последним, он может располагаться в любой позиции:
Более того, может быть любое количество spread-операторов и в любом порядке:
Итог
Оба оператора rest и spread обозначаются символами .... Чтобы их не путать при работе с функциями, нужно следовать следующим принципам:
- rest-оператор используется при создании функций. Он позволяет собрать остаточные параметры функции в массив
- spread-оператор используется при вызове функций. Он извлекает элементы из массива и заполняет ими параметры функции при вызове




