Оператор 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;
}

Пронађите помоћу наведене функције збир елемената низа.