Overføring av funksjoner som parametere i JavaScript
Funksjoner, på samme måte som tall, strenger og matriser, kan overføres som parametere til andre funksjoner.
La oss se nærmere på et praktisk eksempel.
Anta at vi har en funksjon test som tar
to parametere:
test(parameter1, parameter2);
La oss i den første parameteren til funksjonen test
overføre en anonym funksjon som returnerer
1, og i den andre parameteren - en anonym
funksjon som returnerer 2:
test(
function() {return 1;},
function() {return 2;}
);
Koden ovenfor er ikke funksjonell ennå, siden vi ikke har opprettet selve funksjonen. La oss gjøre det:
function test(func1, func2) {
}
Ved definisjonen av funksjonen spesifiserte vi to parametere
- func1 og func2. Disse parameterne
vet ingenting om hva som vil bli overført til dem.
Vi kan for eksempel overføre tall:
test(1, 2); // kaller funksjonen
function test(func1, func2) {
console.log(func1); // vil skrive ut 1
console.log(func2); // vil skrive ut 2
}
Eller vi kan overføre funksjoner:
test(
function() {return 1;}, // første parameter
function() {return 2;} // andre parameter
);
function test(func1, func2) {
console.log(func1); // vil skrive ut 'function() {return 1;}'
console.log(func2); // vil skrive ut 'function() {return 2;}'
}
Som du ser, skrives nå kildekoden til funksjonene ut i konsollen. La oss gjøre slik at den skriver ut resultatene deres. For å gjøre dette, la oss skrive parenteser etter funksjonene:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() ); // vil skrive ut 1
console.log( func2() ); // vil skrive ut 2
}
La oss skrive ut summen av resultatene fra den første og den andre funksjonen til konsollen:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() + func2() ); // vil skrive ut 3
}
Lag en funksjon test som tar
3 funksjoner som parametere. Overfør til
den i den første parameteren en funksjon som returnerer
1, i den andre - en funksjon som returnerer
2, i den tredje - en funksjon som returnerer
3. Skriv ut summen av resultatene
fra funksjonene i konsollen.