Прослеђивање функција као параметара у JavaScript-у
Функције, попут бројева, стрингова и низова, могу се прослеђивати као параметри другим функцијама.
Размотримо детаљније на практичном примеру.
Претпоставимо да имамо функцију test која прима
два параметра:
test(параметар1, параметар2);
Хајде да у први параметар функције test
проследимо анонимну функцију која враћа
1, а у други параметр - анонимну
функцију која враћа 2:
test(
function() {return 1;},
function() {return 2;}
);
Горњи код још увек није функционалан, јер нисмо креирали саму функцију. Хајде да то урадимо:
function test(func1, func2) {
}
При дефинисању функције смо навели два параметра
- func1 и func2. Ови параметри
не знају ништа о томе шта ће им бити прослеђено.
Можемо, на пример, проследити бројеве:
test(1, 2); // позивамо функцију
function test(func1, func2) {
console.log(func1); // исписаће 1
console.log(func2); // исписаће 2
}
А можемо проследити функције:
test(
function() {return 1;}, // први параметар
function() {return 2;} // други параметар
);
function test(func1, func2) {
console.log(func1); // исписаће 'function() {return 1;}'
console.log(func2); // исписаће 'function() {return 2;}'
}
Као што видите, сада се у конзолу исписује изворни код функција. Хајде да то променимо тако да исписује њихове резултате. За то треба да напишемо заграде након имена функција:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() ); // исписаће 1
console.log( func2() ); // исписаће 2
}
Хајде да испишемо у конзолу збир резултата прве и друге функције:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() + func2() ); // исписаће 3
}
Направите функцију test која као параметре
прима 3 функције. Проследите јој
као први параметар функцију која враћа
1, као други - функцију која враћа
2, а као трећи - функцију која враћа
3. Испишите у конзолу збир резултата
функција.