Оператор spread в JavaScript

В ES6 се появи специален оператор ..., наречен spread.

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

Сигурно звучи неразбираемо, затова нека да разгледаме прост пример. Нека имаме функция, приемаща 3 параметра и връщаща тяхната сума:

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

Нека имаме също масив от три елемента:

javascriptlet arr = [1, 2, 3];

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

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

Защото в този случай целият масив ще попадне в първия параметър на функцията, а в този параметър е необходимо да се подава число (и във всички останали параметри също).

Разбира се, може да постъпим по следния начин:

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

Но има и по-прост начин - да използваме оператора spread:

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

Наличието на променлива не е задължително - може да прилагаме spread директно към масива:

javascriptfunc(...[1, 2, 3]);
Задание 1

Даден е масив:

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

Дадена е също функция:

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

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