Prehadzovanie funkcií parametrami v JavaScript

Funkcie, podobne ako čísla, reťazce a polia, môžu byť prehadzované parametrami do iných funkcií.

Pozrime sa podrobnejšie na praktický príklad. Predpokladajme, že máme funkciu test, ktorá prijíma dva parametre:

javascripttest(parameter1, parameter2);

Do prvého parametra funkcie test predejme anonymnú funkciu, ktorá vracia 1, a do druhého parametra - anonymnú funkciu, ktorá vracia 2:

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

Kód uvedený vyššie zatiaľ nie je funkčný, pretože sme nevytvorili samotnú funkciu. Vytvorme ju:

javascriptfunction test(func1, func2) {
  
}

Pri definícii funkcie sme uviedli dva parametre - func1 a func2. Tieto parametre nevedia nič o tom, čo sa do nich prenesie. Môžeme napríklad preniesť čísla:

javascripttest(1, 2); // voláme funkciu

function test(func1, func2) {
  console.log(func1); // vypíše 1
  console.log(func2); // vypíše 2
}

Alebo môžeme preniesť funkcie:

javascripttest(
  function() {return 1;}, // prvý parameter
  function() {return 2;}  // druhý parameter
);

function test(func1, func2) {
  console.log(func1); // vypíše 'function() {return 1;}'
  console.log(func2); // vypíše 'function() {return 2;}'
}

Ako vidíte, teraz sa do konzoly vypíše zdrojový kód funkcií. Urobme to tak, aby vypisoval ich výsledky. Na to napíšme funkciám okrúhle zátvorky:

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

function test(func1, func2) {
  console.log( func1() ); // vypíše 1
  console.log( func2() ); // vypíše 2
}

Vypíšme do konzoly súčet výsledkov prvej a druhej funkcie:

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

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

Vytvorte funkciu test, ktorá parametrami prijíma 3 funkcie. Predejte do nej prvým parametrom funkciu, ktorá vracia 1, druhým - funkciu, ktorá vracia 2, tretím - funkciu, ktorá vracia 3. Vypíšte do konzoly súčet výsledkov funkcií.