Prosleđivanje funkcija kao parametara u JavaScriptu

Funkcije, slično kao brojevi, stringovi i nizovi, mogu se proslediti kao parametri drugim funkcijama.

Pogledajmo detaljnije na praktičnom primeru. Pretpostavimo da imamo funkciju test koja prima dva parametra:

javascripttest(parameter1, parameter2);

Hajde da u prvi parameter funkcije test prosledimo anonimnu funkciju koja vraća 1, a u drugi parameter - anonimnu funkciju koja vraća 2:

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

Gore navedeni kod još uvek ne radi, pošto nismo kreirali samu funkciju. Napravimo to:

javascriptfunction test(func1, func2) {
  
}

Prilikom definisanja funkcije naveli smo dva parametra - func1 i func2. Ovi parametri ne znaju ništa o tome šta će im biti prosleđeno. Možemo, na primer, proslediti brojeve:

javascripttest(1, 2); // pozivamo funkciju

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

A možemo proslediti funkcije:

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

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

Kao što vidite, sada se u konzolu ispisuje izvorni kod funkcija. Hajde da to promenimo tako da ispisuje njihove rezultate. Za to treba da dodamo okrugle zagrade pozivima funkcija:

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

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

Hajde da ispišemo u konzolu zbir rezultata prve i druge funkcije:

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

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

Napravite funkciju test koja kao parametre prima 3 funkcije. Prosledite joj kao prvi parameter funkciju koja vraća 1, kao drugi - funkciju koja vraća 2, kao treći - funkciju koja vraća 3. Ispišite u konzolu zbir rezultata funkcija.