Funktion, die eine Funktion in JavaScript zurückgibt
Nehmen wir an, wir haben eine Funktion, die einen String zurückgibt:
function func() {
return '!';
}
let result = func();
console.log(result); // gibt '!' aus
Lassen Sie uns nun analog dazu statt eines Strings eine anonyme Funktion zurückgeben:
function func() {
return function() {
return '!';
};
}
let result = func(); // in der Variable result wird eine Funktion sein
console.log(result); // gibt 'function() {return '!';}' aus
Wie Sie sehen, stellt die Variable result nun
eine Funktion dar. Lassen Sie uns das Ergebnis
ihrer Ausführung in der Konsole ausgeben. Dazu schreiben wir
runde Klammern dahinter:
function func() {
return function() {
return '!';
};
}
let result = func();
console.log( result() ); // gibt '!' aus
Da der Aufruf func() eine Funktion zurückgibt,
können wir diese zurückgegebene Funktion
auch sofort aufrufen, wie folgt: func()() - die ersten
runden Klammern erhalten das Ergebnis der Funktion
func (welches selbst eine Funktion ist),
und die zweiten runden Klammern werden auf das Ergebnis von
func angewendet.
Versuchen wir es:
function func() {
return function() {
return '!';
};
}
console.log( func()() ); // gibt '!' aus
Erstellen Sie eine Funktion func1, die,
wenn sie so aufgerufen wird: func1()(),
die Zahl 1 zurückgibt. Erstellen Sie eine ähnliche Funktion
func2, die die Zahl 2 zurückgibt.
Finden Sie die Summe der Ergebnisse dieser Funktionen.