JS: Функции
2026-02-26 17:14 Diff

spread-оператор в вызовах функций синтаксически идентичен rest-оператору в определениях, но выполняет обратное действие. Посмотрим на примере функции sum():

Вызовем sum(), применив spread-оператор к массиву аргументов:

spread-оператор раскладывает массив на аргументы. Количество аргументов, полученных spread-оператором, равно количеству элементов массива. По сути, код выше преобразуется в вызов:

Как и в случае с определением функций, spread-оператор может использоваться совместно с позиционными аргументами:

В отличие от rest-оператора в определении функций, spread-оператор не обязательно должен быть последним, он может располагаться в любой позиции:

Более того, может быть любое количество spread-операторов и в любом порядке:

Итог

Оба оператора rest и spread обозначаются символами .... Чтобы их не путать при работе с функциями, нужно следовать следующим принципам:

  • rest-оператор используется при создании функций. Он позволяет собрать остаточные параметры функции в массив
  • spread-оператор используется при вызове функций. Он извлекает элементы из массива и заполняет ими параметры функции при вызове