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:
test(parameter1, parameter2);
Do prvého parametra funkcie test
predejme anonymnú funkciu, ktorá vracia
1, a do druhého parametra - anonymnú
funkciu, ktorá vracia 2:
test(
function() {return 1;},
function() {return 2;}
);
Kód uvedený vyššie zatiaľ nie je funkčný, pretože sme nevytvorili samotnú funkciu. Vytvorme ju:
function 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:
test(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:
test(
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:
test(
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:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() + func2() ); // vypíše 3
}
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í.