Att skicka funktioner som parametrar i JavaScript
Funktioner, precis som siffror, strängar och arrayer, kan skickas som parametrar till andra funktioner.
Låt oss titta närmare på ett praktiskt exempel.
Antag att vi har en funktion test som tar
två parametrar:
test(parameter1, parameter2);
Låt oss skicka en anonym funktion som returnerar
1 som den första parametern till funktionen test,
och en anonym funktion som returnerar 2 som den
andra parametern:
test(
function() {return 1;},
function() {return 2;}
);
Koden ovan fungerar inte ännu, eftersom vi inte har skapat själva funktionen. Låt oss göra det:
function test(func1, func2) {
}
När vi definierade funktionen angav vi två parametrar
- func1 och func2. Dessa parametrar
vet inget om vad som kommer att skickas till dem.
Vi kan till exempel skicka siffror:
test(1, 2); // anropar funktionen
function test(func1, func2) {
console.log(func1); // skriver ut 1
console.log(func2); // skriver ut 2
}
Eller så kan vi skicka funktioner:
test(
function() {return 1;}, // första parametern
function() {return 2;} // andra parametern
);
function test(func1, func2) {
console.log(func1); // skriver ut 'function() {return 1;}'
console.log(func2); // skriver ut 'function() {return 2;}'
}
Som ni ser skrivs nu funktionernas källkod ut i konsolen. Låt oss göra så att den skriver ut deras resultat istället. För att göra detta skriver vi parenteser efter funktionerna:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() ); // skriver ut 1
console.log( func2() ); // skriver ut 2
}
Låt oss skriva ut summan av resultaten från den första och den andra funktionen till konsolen:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() + func2() ); // skriver ut 3
}
Skapa en funktion test som tar
3 funktioner som parametrar. Skicka till
den, som första parameter, en funktion som returnerar
1, som andra - en funktion som returnerar
2, och som tredje - en funktion som returnerar
3. Skriv ut summan av funktionernas resultat
i konsolen.