Operator spread w JavaScript

W ES6 pojawił się specjalny operator ..., nazywany spread.

Gdy operator spread znajduje się przed tablicą, rozdziela tę tablicę na pojedyncze wartości, przekształcając tablicę w zestaw parametrów wymaganych do wywołania funkcji.

Pewnie brzmi to niejasno, dlatego spójrzmy na prostym przykładzie. Załóżmy, że mamy funkcję przyjmującą 3 parametry i zwracającą ich sumę:

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

Załóżmy, że mamy również tablicę z trzema elementami:

javascriptlet arr = [1, 2, 3];

Oczywiście, nie możemy po prostu wziąć i przekazać tej tablicy jako parametr funkcji, w ten sposób:

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

Ponieważ w tym przypadku cała tablica trafi do pierwszego parametru funkcji, a do tego parametru trzeba przekazać liczbę (i do pozostałych parametrów również).

Oczywiście, można postąpić w następujący sposób:

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

Ale istnieje prostsza ścieżka - użycie operatora spread:

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

Obecność zmiennej nie jest obowiązkowa - można stosować spread bezpośrednio do tablicy:

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

Dana jest tablica:

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

Dana jest również funkcja:

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

Znajdź za pomocą podanej funkcji sumę elementów tablicy.