Posredovanje funkcij kot parametri v JavaScript

Funkcije, podobno kot števila, nizi in polja, se lahko posredujejo kot parametri drugim funkcijam.

Oglejmo si podrobneje s praktičnim primerom. Recimo, da imamo funkcijo test, ki sprejme dva parametra:

javascripttest(parameter1, parameter2);

V prvi parameter funkcije test posredujmo anonimno funkcijo, ki vrne 1, v drugi parameter pa anonimno funkcijo, ki vrne 2:

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

Zgornja koda še ne deluje, saj funkcije same še nismo ustvarili. Naredimo to:

javascriptfunction test(func1, func2) {
  
}

Pri definiranju funkcije smo navedli dva parametra - func1 in func2. Ta parametra ne vesta ničesar o tem, kaj se bo vanju posredovalo. Lahko na primer posredujemo števila:

javascripttest(1, 2); // kličemo funkcijo

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

Lahko pa posredujemo funkcije:

javascripttest(
  function() {return 1;}, // prvi parameter
  function() {return 2;}  // drugi parameter
);

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

Kot lahko vidite, se v konzolo izpiše izvorna koda funkcij. Naredimo tako, da bo izpisala njihove rezultate. Za to funkcijam dodajmo okrogle oklepaje:

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

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

Izpišimo v konzolo vsoto rezultatov prve in druge funkcije:

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

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

Naredite funkcijo test, ki kot parametre sprejme 3 funkcije. Vanjo posredujte kot prvi parameter funkcijo, ki vrne 1, kot drugo - funkcijo, ki vrne 2, kot tretjo - funkcijo, ki vrne 3. Izpišite v konzolo vsoto rezultatov funkcij.