Functie die een functie retourneert in JavaScript
Stel dat we een functie hebben die een string retourneert:
function func() {
return '!';
}
let result = func();
console.log(result); // geeft '!' weer
Laten we nu, in analogie, in plaats van een string, een anonieme functie retourneren:
function func() {
return function() {
return '!';
};
}
let result = func(); // in variabele result zit een functie
console.log(result); // geeft 'function() {return '!';}' weer
Zoals je ziet, is de variabele result nu
een functie. Laten we het resultaat van de uitvoering ervan
naar de console loggen. Schrijf er hiervoor
ronde haakjes achter:
function func() {
return function() {
return '!';
};
}
let result = func();
console.log( result() ); // geeft '!' weer
Omdat de aanroep func() een functie retourneert,
kunnen we deze geretourneerde functie
meteen aanroepen, zoals dit: func()() - de eerste
ronde haakjes verkrijgen het resultaat van de functie
func (dat zelf een functie is),
en de tweede ronde haakjes worden toegepast op het resultaat van
func.
Laten we het proberen:
function func() {
return function() {
return '!';
};
}
console.log( func()() ); // geeft '!' weer
Maak een functie func1, die wanneer
zo aangeroepen: func1()(), het
getal 1 retourneert. Maak een vergelijkbare functie
func2, die het getal 2 retourneert.
Bereken de som van de resultaten van deze functies.