Funksjon som returnerer en funksjon i JavaScript
La oss si at vi har en funksjon som returnerer en streng slik:
function func() {
return '!';
}
let result = func();
console.log(result); // vil skrive ut '!'
La oss nå, analogt, returnere en anonym funksjon i stedet for en streng:
function func() {
return function() {
return '!';
};
}
let result = func(); // variabelen result vil inneholde en funksjon
console.log(result); // vil skrive ut 'function() {return '!';}'
Som du ser, er variabelen result nå
en funksjon. La oss skrive ut
resultatet av dens kjøring til konsollen. For å gjøre dette skriver vi
parenteser etter den:
function func() {
return function() {
return '!';
};
}
let result = func();
console.log( result() ); // vil skrive ut '!'
Siden kallet func() returnerer en funksjon,
kan vi umiddelbart kalle denne returnerte
funksjonen, slik: func()() - de første
parentesene henter resultatet av funksjonen
func (som selv er en funksjon),
og de andre parentesene brukes på resultatet av
func.
La oss prøve:
function func() {
return function() {
return '!';
};
}
console.log( func()() ); // vil skrive ut '!'
Lag en funksjon func1 som,
når den kalles slik: func1()(), returnerer
tallet 1. Lag en tilsvarende funksjon
func2 som returnerer tallet 2.
Finn summen av resultatene fra disse funksjonene.