Functies doorgeven als parameters in JavaScript
Functies kunnen, net als getallen, strings en arrays, als parameters worden doorgegeven aan andere functies.
Laten we dit nader bekijken aan de hand van een praktisch voorbeeld.
Stel we hebben een functie test die
twee parameters accepteert:
test(parameter1, parameter2);
Laten we aan de eerste parameter van de functie test
een anonieme functie doorgeven die
1 teruggeeft, en aan de tweede parameter - een anonieme
functie die 2 teruggeeft:
test(
function() {return 1;},
function() {return 2;}
);
De bovenstaande code werkt nog niet, omdat we de functie zelf nog niet hebben gemaakt. Laten we dat doen:
function test(func1, func2) {
}
Bij het definiëren van de functie hebben we twee parameters opgegeven
- func1 en func2. Deze parameters
weten niets over wat er in hen zal worden doorgegeven.
We kunnen bijvoorbeeld getallen doorgeven:
test(1, 2); // roep de functie aan
function test(func1, func2) {
console.log(func1); // geeft 1 weer
console.log(func2); // geeft 2 weer
}
Of we kunnen functies doorgeven:
test(
function() {return 1;}, // eerste parameter
function() {return 2;} // tweede parameter
);
function test(func1, func2) {
console.log(func1); // geeft 'function() {return 1;}' weer
console.log(func2); // geeft 'function() {return 2;}' weer
}
Zoals je ziet, wordt nu de broncode van de functies in de console weergegeven. Laten we ervoor zorgen dat het hun resultaten weergeeft. Hiervoor schrijven we ronde haakjes bij de functies:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() ); // geeft 1 weer
console.log( func2() ); // geeft 2 weer
}
Laten we de som van de resultaten van de eerste en tweede functie in de console weergeven:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() + func2() ); // geeft 3 weer
}
Maak een functie test die
3 functies als parameters accepteert. Geef als
eerste parameter een functie door die
1 teruggeeft, als tweede - een functie die
2 teruggeeft, en als derde - een functie die
3 teruggeeft. Geef de som van de resultaten van de
functies weer in de console.