Prosleđivanje funkcija kao parametara u JavaScriptu
Funkcije, slično kao brojevi, stringovi i nizovi, mogu se proslediti kao parametri drugim funkcijama.
Pogledajmo detaljnije na praktičnom primeru.
Pretpostavimo da imamo funkciju test koja prima
dva parametra:
test(parameter1, parameter2);
Hajde da u prvi parameter funkcije test
prosledimo anonimnu funkciju koja vraća
1, a u drugi parameter - anonimnu
funkciju koja vraća 2:
test(
function() {return 1;},
function() {return 2;}
);
Gore navedeni kod još uvek ne radi, pošto nismo kreirali samu funkciju. Napravimo to:
function test(func1, func2) {
}
Prilikom definisanja funkcije naveli smo dva parametra
- func1 i func2. Ovi parametri
ne znaju ništa o tome šta će im biti prosleđeno.
Možemo, na primer, proslediti brojeve:
test(1, 2); // pozivamo funkciju
function test(func1, func2) {
console.log(func1); // ispisaće 1
console.log(func2); // ispisaće 2
}
A možemo proslediti funkcije:
test(
function() {return 1;}, // prvi parameter
function() {return 2;} // drugi parameter
);
function test(func1, func2) {
console.log(func1); // ispisaće 'function() {return 1;}'
console.log(func2); // ispisaće 'function() {return 2;}'
}
Kao što vidite, sada se u konzolu ispisuje izvorni kod funkcija. Hajde da to promenimo tako da ispisuje njihove rezultate. Za to treba da dodamo okrugle zagrade pozivima funkcija:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() ); // ispisaće 1
console.log( func2() ); // ispisaće 2
}
Hajde da ispišemo u konzolu zbir rezultata prve i druge funkcije:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() + func2() ); // ispisaće 3
}
Napravite funkciju test koja kao parametre
prima 3 funkcije. Prosledite joj
kao prvi parameter funkciju koja vraća
1, kao drugi - funkciju koja vraća
2, kao treći - funkciju koja vraća
3. Ispišite u konzolu zbir rezultata
funkcija.