Przekazywanie funkcji jako parametrów w JavaScript
Funkcje, podobnie jak liczby, ciągi znaków i tablice, mogą być przekazywane jako parametry do innych funkcji.
Przyjrzyjmy się temu dokładniej na praktycznym przykładzie.
Załóżmy, że mamy funkcję test, przyjmującą
dwa parametry:
test(parametr1, parametr2);
Przekażmy w pierwszym parametrze funkcji test
funkcję anonimową, zwracającą
1, a w drugim parametrze - funkcję anonimową
zwracającą 2:
test(
function() {return 1;},
function() {return 2;}
);
Powyższy kod nie jest jeszcze działający, ponieważ nie stworzyliśmy jeszcze samej funkcji. Zróbmy to:
function test(func1, func2) {
}
Przy definiowaniu funkcji wskazaliśmy dwa parametry
- func1 i func2. Te parametry
nie wiedzą nic o tym, co będzie do nich przekazywane.
Możemy na przykład przekazać liczby:
test(1, 2); // wywołujemy funkcję
function test(func1, func2) {
console.log(func1); // wypisze 1
console.log(func2); // wypisze 2
}
A możemy przekazać funkcje:
test(
function() {return 1;}, // pierwszy parametr
function() {return 2;} // drugi parametr
);
function test(func1, func2) {
console.log(func1); // wypisze 'function() {return 1;}'
console.log(func2); // wypisze 'function() {return 2;}'
}
Jak widać, teraz w konsoli wypisywany jest kod źródłowy funkcji. Zróbmy tak, aby wypisywał ich wyniki. W tym celu dopiszmy do funkcji okrągłe nawiasy:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() ); // wypisze 1
console.log( func2() ); // wypisze 2
}
Wypiszmy w konsoli sumę wyników pierwszej i drugiej funkcji:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() + func2() ); // wypisze 3
}
Stwórz funkcję test, przyjmującą jako parametry
3 funkcje. Przekaż do
niej pierwszym parametrem funkcję zwracającą
1, drugim - funkcję zwracającą
2, trzecim - funkcję zwracającą
3. Wypisz w konsoli sumę wyników
funkcji.