Прослеђивање функција као параметара у JavaScript-у

Функције, попут бројева, стрингова и низова, могу се прослеђивати као параметри другим функцијама.

Размотримо детаљније на практичном примеру. Претпоставимо да имамо функцију test која прима два параметра:

javascripttest(параметар1, параметар2);

Хајде да у први параметар функције test проследимо анонимну функцију која враћа 1, а у други параметр - анонимну функцију која враћа 2:

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

Горњи код још увек није функционалан, јер нисмо креирали саму функцију. Хајде да то урадимо:

javascriptfunction test(func1, func2) {
  
}

При дефинисању функције смо навели два параметра - func1 и func2. Ови параметри не знају ништа о томе шта ће им бити прослеђено. Можемо, на пример, проследити бројеве:

javascripttest(1, 2); // позивамо функцију

function test(func1, func2) {
  console.log(func1); // исписаће 1
  console.log(func2); // исписаће 2
}

А можемо проследити функције:

javascripttest(
  function() {return 1;}, // први параметар
  function() {return 2;}  // други параметар
);

function test(func1, func2) {
  console.log(func1); // исписаће 'function() {return 1;}'
  console.log(func2); // исписаће 'function() {return 2;}'
}

Као што видите, сада се у конзолу исписује изворни код функција. Хајде да то променимо тако да исписује њихове резултате. За то треба да напишемо заграде након имена функција:

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

function test(func1, func2) {
  console.log( func1() ); // исписаће 1
  console.log( func2() ); // исписаће 2
}

Хајде да испишемо у конзолу збир резултата прве и друге функције:

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

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

Направите функцију test која као параметре прима 3 функције. Проследите јој као први параметар функцију која враћа 1, као други - функцију која враћа 2, а као трећи - функцију која враћа 3. Испишите у конзолу збир резултата функција.