Posredovanje funkcij kot parametri v JavaScript
Funkcije, podobno kot števila, nizi in polja, se lahko posredujejo kot parametri drugim funkcijam.
Oglejmo si podrobneje s praktičnim primerom.
Recimo, da imamo funkcijo test, ki sprejme
dva parametra:
test(parameter1, parameter2);
V prvi parameter funkcije test
posredujmo anonimno funkcijo, ki vrne
1, v drugi parameter pa anonimno
funkcijo, ki vrne 2:
test(
function() {return 1;},
function() {return 2;}
);
Zgornja koda še ne deluje, saj funkcije same še nismo ustvarili. Naredimo to:
function test(func1, func2) {
}
Pri definiranju funkcije smo navedli dva parametra
- func1 in func2. Ta parametra
ne vesta ničesar o tem, kaj se bo vanju posredovalo.
Lahko na primer posredujemo števila:
test(1, 2); // kličemo funkcijo
function test(func1, func2) {
console.log(func1); // izpiše 1
console.log(func2); // izpiše 2
}
Lahko pa posredujemo funkcije:
test(
function() {return 1;}, // prvi parameter
function() {return 2;} // drugi parameter
);
function test(func1, func2) {
console.log(func1); // izpiše 'function() {return 1;}'
console.log(func2); // izpiše 'function() {return 2;}'
}
Kot lahko vidite, se v konzolo izpiše izvorna koda funkcij. Naredimo tako, da bo izpisala njihove rezultate. Za to funkcijam dodajmo okrogle oklepaje:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() ); // izpiše 1
console.log( func2() ); // izpiše 2
}
Izpišimo v konzolo vsoto rezultatov prve in druge funkcije:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() + func2() ); // izpiše 3
}
Naredite funkcijo test, ki kot parametre
sprejme 3 funkcije. Vanjo posredujte kot
prvi parameter funkcijo, ki vrne
1, kot drugo - funkcijo, ki vrne
2, kot tretjo - funkcijo, ki vrne
3. Izpišite v konzolo vsoto rezultatov
funkcij.