Erklären "Sie können Funktionen haben, die andere Funktionen ändern"

8

Ich habe Eloquent JavaScript gelesen, als ich in Kapitel 5 darauf gestoßen bin:

  

Sie können Funktionen haben, die neue Funktionen erstellen.

%Vor%      

Und Sie können Funktionen haben, die andere Funktionen ändern.

%Vor%

Meine Fragen sind:

  • Wie unterscheiden sich die beiden obigen Beispiele?
  • Wie ändert sich laut Boolesch ?
kchak 25.07.2015, 03:26
quelle

2 Antworten

4

Der Unterschied besteht darin, dass das Argument für noisy eher eine andere Funktion als ein "einfacher" Wert wie eine Zahl sein soll. Also, ja, es erstellt eine neue anonyme Funktion genau wie greaterThan , aber es ist ein Wrapper um eine bestehende Funktion, die ihr Verhalten ändert.

In diesem Fall protokolliert der Wrapper nur einige Nachrichten vor und nach dem Aufruf der ursprünglichen Funktion f . Aber Sie könnten andere Dinge tun, wie zum Beispiel seine Argumente oder seinen Rückgabewert ändern. Beispielsweise können Sie Teilfunktionsanwendungen implementieren, mit denen Sie einige der Argumente für einen Funktionsaufruf an einem Punkt im Programm und "erinnere" sich an diese Argumente in einer neuen Funktion, die später nur die verbleibenden Argumente übernimmt.

    
Wyzard 25.07.2015, 03:36
quelle
1
  

Wie unterscheiden sich die beiden obigen Beispiele?

greaterThan akzeptiert einen Parameter, n , der eine Zahl sein soll.

noisy akzeptiert einen Parameter, f , der eine Funktion sein soll, die er dann aufrufen kann.

Wo greaterThan nur eine Zahl auswertet, ist noisy viel flexibler, da es jede Funktion akzeptieren und ausführen kann.

  

Wie ändert sich die Boolesche Störung?

noisy gibt eine anonyme Funktion zurück, die Boolean in der Zeile auswertet, in der sie ihre Ergebnisse in einer Variablen namens val speichert.

    
Richard Kho 25.07.2015 03:35
quelle