Оператор spread в JavaScript

В ES6 появился специальный оператор ..., называющийся spread.

Когда оператор spread стоит перед массивом, он разделяет этот массив на отдельные значения, превращая массив в набор параметров, необходимых для вызова функции.

Наверняка звучит непонятно, поэтому давайте посмотрим на простом примере. Пусть у нас есть функция, принимающая 3 параметра и возвращающая их сумму:

function func(num1, num2, num3) { return num1 + num2 + num3; }

Пусть у нас также есть массив из трех элементов:

let arr = [1, 2, 3];

Очевидно, что мы не можем просто взять и передать этот массив параметром функции, вот так:

let arr = [1, 2, 3]; func(arr);

Ведь в этом случае весь массив попадет в первый параметр функции, а в этот параметр необходимо передавать число (да и в остальные параметры тоже).

Конечно же, можно поступить следующим образом:

let arr = [1, 2, 3]; func(arr[0], arr[1], arr[2]);

Но есть и более простой путь - использовать оператор spread:

let arr = [1, 2, 3]; func(...arr);

Наличие переменной не является обязательным - можно применять spread прямо к массиву:

func(...[1, 2, 3]);

Дан массив:

let arr = [1, 2, 3, 4, 5];

Дана также функция:

function func(num1, num2, num3, num4, num5) { return num1 + num2 + num3 + num4 + num5; }

Найдите с помощью приведенной функции сумму элементов массива.

enru