Předávání funkcí jako parametrů v JavaScriptu
Funkce, podobně jako čísla, řetězce a pole, lze předávat jako parametry do jiných funkcí.
Podívejme se na to podrobněji na praktickém příkladu.
Předpokládejme, že máme funkci test, která přijímá
dva parametry:
test(parametr1, parametr2);
Nyní do prvního parametru funkce test
předáme anonymní funkci vracející
1, a do druhého parametru - anonymní
funkci vracející 2:
test(
function() {return 1;},
function() {return 2;}
);
Výše uvedený kód zatím nefunguje, protože jsme nevytvořili samotnou funkci. Vytvořme ji:
function test(func1, func2) {
}
Při definici funkce jsme určili dva parametry
- func1 a func2. Tyto parametry
nemají ponětí o tom, co do nich bude předáno.
Můžeme například předat čísla:
test(1, 2); // voláme funkci
function test(func1, func2) {
console.log(func1); // vypíše 1
console.log(func2); // vypíše 2
}
Nebo můžeme předat funkce:
test(
function() {return 1;}, // první parametr
function() {return 2;} // druhý parametr
);
function test(func1, func2) {
console.log(func1); // vypíše 'function() {return 1;}'
console.log(func2); // vypíše 'function() {return 2;}'
}
Jak vidíte, nyní se do konzole vypisuje zdrojový kód funkcí. Udělejme to tak, aby vypisoval jejich výsledky. K tomu přidáme funkcím kulaté závorky:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() ); // vypíše 1
console.log( func2() ); // vypíše 2
}
Nyní vypišme do konzole součet výsledků první a druhé funkce:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() + func2() ); // vypíše 3
}
Vytvořte funkci test, která jako parametry
přijímá 3 funkce. Předejte do
ní prvním parametrem funkci vracející
1, druhým - funkci vracející
2, třetím - funkci vracející
3. Vypište do konzole součet výsledků
funkcí.