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:
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.
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.
Tags und Links javascript higher-order-functions