Przekazywanie funkcji jako parametrów w JavaScript

Funkcje, podobnie jak liczby, ciągi znaków i tablice, mogą być przekazywane jako parametry do innych funkcji.

Przyjrzyjmy się temu dokładniej na praktycznym przykładzie. Załóżmy, że mamy funkcję test, przyjmującą dwa parametry:

javascripttest(parametr1, parametr2);

Przekażmy w pierwszym parametrze funkcji test funkcję anonimową, zwracającą 1, a w drugim parametrze - funkcję anonimową zwracającą 2:

javascripttest(
  function() {return 1;},
  function() {return 2;}
);

Powyższy kod nie jest jeszcze działający, ponieważ nie stworzyliśmy jeszcze samej funkcji. Zróbmy to:

javascriptfunction test(func1, func2) {
  
}

Przy definiowaniu funkcji wskazaliśmy dwa parametry - func1 i func2. Te parametry nie wiedzą nic o tym, co będzie do nich przekazywane. Możemy na przykład przekazać liczby:

javascripttest(1, 2); // wywołujemy funkcję

function test(func1, func2) {
  console.log(func1); // wypisze 1
  console.log(func2); // wypisze 2
}

A możemy przekazać funkcje:

javascripttest(
  function() {return 1;}, // pierwszy parametr
  function() {return 2;}  // drugi parametr
);

function test(func1, func2) {
  console.log(func1); // wypisze 'function() {return 1;}'
  console.log(func2); // wypisze 'function() {return 2;}'
}

Jak widać, teraz w konsoli wypisywany jest kod źródłowy funkcji. Zróbmy tak, aby wypisywał ich wyniki. W tym celu dopiszmy do funkcji okrągłe nawiasy:

javascripttest(
  function() {return 1;},
  function() {return 2;}
);

function test(func1, func2) {
  console.log( func1() ); // wypisze 1
  console.log( func2() ); // wypisze 2
}

Wypiszmy w konsoli sumę wyników pierwszej i drugiej funkcji:

javascripttest(
  function() {return 1;},
  function() {return 2;}
);

function test(func1, func2) {
  console.log( func1() + func2() ); // wypisze 3
}
Задание 1

Stwórz funkcję test, przyjmującą jako parametry 3 funkcje. Przekaż do niej pierwszym parametrem funkcję zwracającą 1, drugim - funkcję zwracającą 2, trzecim - funkcję zwracającą 3. Wypisz w konsoli sumę wyników funkcji.