Funktion, der returnerer en funktion i JavaScript
Lad os sige, at vi har en funktion som denne, der returnerer en streng:
function func() {
return '!';
}
let result = func();
console.log(result); // vil udskrive '!'
Lad os nu, analogt hermed, returnere en anonym funktion i stedet for en streng:
function func() {
return function() {
return '!';
};
}
let result = func(); // variablen result vil indeholde en funktion
console.log(result); // vil udskrive 'function() {return '!';}'
Som du kan se, er variablen result nu
en funktion. Lad os udskrive
resultatet af dens eksekvering til konsollen. For at gøre dette skal vi skrive
parenteser efter den:
function func() {
return function() {
return '!';
};
}
let result = func();
console.log( result() ); // vil udskrive '!'
Da kaldet func() returnerer en funktion,
kan vi umiddelbart kalde denne returnerede
funktion, sådan her: func()() - de første
parenteser henter resultatet af funktionen
func (som selv er en funktion),
og de anden parenteser anvendes på resultatet af
func.
Lad os prøve:
function func() {
return function() {
return '!';
};
}
console.log( func()() ); // vil udskrive '!'
Lav en funktion func1, sådan at når den
kaldes sådan her: func1()(), returnerer den
nummer 1. Lav en tilsvarende funktion
func2, der returnerer nummer 2.
Find summen af resultaterne af disse funktioner.