Overførsel af funktioner som parametre i JavaScript
Funktioner, ligesom tal, strenge og arrays, kan overføres som parametre til andre funktioner.
Lad os se nærmere på et praktisk eksempel.
Antag, at vi har en funktion test, der accepterer
to parametre:
test(parameter1, parameter2);
Lad os i den første parameter for funktionen test
overføre en anonym funktion, der returnerer
1, og i den anden parameter - en anonym
funktion, der returnerer 2:
test(
function() {return 1;},
function() {return 2;}
);
Koden vist ovenfor virker ikke endnu, da vi ikke har oprettet selve funktionen. Lad os gøre det:
function test(func1, func2) {
}
Ved definitionen af funktionen angav vi to parametre
- func1 og func2. Disse parametre
ved intet om, hvad der vil blive overført til dem.
Vi kunne for eksempel overføre tal:
test(1, 2); // kalder funktionen
function test(func1, func2) {
console.log(func1); // vil udskrive 1
console.log(func2); // vil udskrive 2
}
Eller vi kan overføre funktioner:
test(
function() {return 1;}, // første parameter
function() {return 2;} // anden parameter
);
function test(func1, func2) {
console.log(func1); // vil udskrive 'function() {return 1;}'
console.log(func2); // vil udskrive 'function() {return 2;}'
}
Som du kan se, udskrives funktionernes kildekode til konsollen nu. Lad os gøre sådan, at den udskriver deres resultater i stedet. For at gøre dette skal vi skrive parenteser efter funktionerne:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() ); // vil udskrive 1
console.log( func2() ); // vil udskrive 2
}
Lad os udskrive summen af resultaterne fra den første og anden funktion til konsollen:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() + func2() ); // vil udskrive 3
}
Lav en funktion test, der som parametre
accepterer 3 funktioner. Overfør til
den som første parameter en funktion, der returnerer
1, som anden - en funktion, der returnerer
2, som tredje - en funktion, der returnerer
3. Udskriv summen af funktionernes resultater
til konsollen.