Funktion, die eine Funktion in JavaScript zurückgibt

Nehmen wir an, wir haben eine Funktion, die einen String zurückgibt:

javascriptfunction func() {
  return '!';
}

let result = func();
console.log(result); // gibt '!' aus

Lassen Sie uns nun analog dazu statt eines Strings eine anonyme Funktion zurückgeben:

javascriptfunction 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:

javascriptfunction 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:

javascriptfunction func() {
  return function() {
    return '!';
  };
}

console.log( func()() ); // gibt '!' aus
Задание 1

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.