Currying-Funktion in JavaScript
Nehmen Sie ein Gefäß, fügen Sie etwas Wasser hinzu, fügen Sie einige Codezeilen hinzu, fügen Sie einige Curryblätter und Masala (nach Ihrem Geschmack) hinzu, kochen Sie es 25 Minuten lang auf niedriger Flamme und, hier ist die Funktion, die bereit ist, in der Produktion serviert zu werden . Ich mache nur Spaß, Boies und Gols.
Halloooo, JS-Entwickler. Ich bin zurück mit einem heißen Thema „Function Currying“
Diese Geschichte behandelt:
- Was ist Curry, wie funktioniert es und warum wird es verwendet?
Die Geschichte beginnt hier
Was ist eine Curry-Funktion?
Currying transformiert eine Funktion, die mehrere Argumente [Beispiel: Funktionsname (a, b, c)] in mehrere Funktionen verwendet, die ein einzelnes Argument in einer Sequenz verwenden.
okay okay.., ich weiß, es klingt con-fu-jing (verwirrend), auch meine Reaktionen waren die gleichen, als ich das zum ersten Mal las.
ok lassen Sie es uns leicht verstehen, eine Funktion (doSum), die alle Argumente auf einmal nimmt, dh doSum(a, b, c) [Beispiel unten: Normale Additionsfunktion.
Wird in mehrere Funktionen (addNumbers(a), (b), (c)) umgewandelt, die jeweils ein einzelnes Argument in einer Sequenz annehmen.
Hinweis: Die Funktionalität (Zweck) beider Funktionen ist dieselbe, nur zum besseren Verständnis umbenannt.
Hier ist, was Currying laut Geeks für Geeks ist :
Es ist eine Technik der funktionalen Programmierung, die Umwandlung der Funktion mehrerer Argumente in mehrere Funktionen eines einzigen Arguments in Folge.
In einfachen Worten, die Funktion, anstatt alle Argumente auf einmal zu nehmen, nimmt die Funktion das erste Argument und gibt die Funktion zurück, die das andere Argument nimmt, und gibt dann wieder eine andere Funktion zurück, die das dritte Argument nimmt, und so weiter, bis alle Argumente sind genommen (Beispiel im Bild benannt: Funktion Curry).
Wie funktioniert Curry?
Das Curring in Javascript ist möglicherweise etwas schwierig zu verstehen, da es sich um Javascript handelt
Aber lassen Sie uns versuchen, den Überblick zu behalten, unten ist ein Beispiel für eine einfache Funktion
hier fügt die Funktion „doSum“ das angegebene Argument hinzu und gibt die Summe aller übergebenen Argumente zurück.
Unten ist die Curry-Version der gleichen Funktion (nur umbenannt, zum besseren Verständnis)
Die Ausgabe der obigen und der folgenden Funktion ist gleich, 18
addNumbers ist die Curry-Version der obigen Funktion doSum, addNumber, die übergeordnete Funktion, nimmt das Argument, dh in unserem Fall 5, und gibt eine andere anonyme Funktion zurück, die ein anderes Argument akzeptiert, dh in unserem Fall 6, und der Prozess wird fortgesetzt, bis alle Parameter übergeben wurden, die Die letzte anonyme Funktion gibt den Wert zurück, nachdem alle Eingaben verarbeitet wurden.
Wir haben im obigen Beispiel verschachtelte Funktionen implementiert, sodass jede der Funktionen ein Argument übernimmt und eine andere Funktion zurückgibt, bis nicht alle Argumente vollständig sind.
Sie können Ihre Funktion auf zwei verschiedene Arten ausführen, indem Sie die Bindefunktion verwenden und Closures verwenden. Mal sehen, wie es aussieht
Funktion Currying mit der Bind-Funktion
Wenn Sie nicht wissen, was die Bindungsfunktion ist, lesen Sie diese Geschichte von mir .
Hier im obigen Beispiel verwenden wir die Bind-Funktion von Javascript, und mit der Bind-Funktion verwenden wir die „onBoardUser“-Funktion.
basicCompanyDetails ist für alle integrierten Benutzer ähnlich, daher möchten wir die Details standardmäßig für alle integrierten Benutzer verfügbar machen. Hier übergeben wir ein Argument „basicCompanyDetails“ an die Bindefunktion und erstellen hier eine Instanz von „onBoardUser“. Die Bind-Funktion gibt die Funktion zurück, die Sie an einer Stelle im Speicher speichern und später ausführen können. Hier speichern wir die Funktion in addUser und wir rufen sie für alle Benutzer auf.
So können Sie Ihre Funktion mit der Bind-Funktion in Javascript ausführen. weitere Beispiele im Bild unten.
Sie können auch beide Parameter übergeben, während Sie die addUserToSales-Methode aufrufen, die dieselben Ergebnisse ausgibt.
Funktion Curry mit Verschlüssen.
Die Closures sind ein sehr verbreitetes, aber kniffliges Konzept in Javascript, das jedoch nicht viel diskutiert wird. Sie können hier nachlesen, was Closures sind .
Lassen Sie uns versuchen, das Currying von Funktionen mithilfe von Closures zu implementieren.
Im obigen Beispiel haben wir eine Funktion „onBoardUser“ erstellt, die ein Argument akzeptiert und eine andere anonyme Funktion zurückgibt, die ein anderes Argument akzeptiert, die Details zusammenfasst und zurückgibt.
wir rufen die Funktion „onBoardUser“ mit einem Argument auf, dh accountDepartmentDetails und speichern es in einer Variablen (denken Sie daran, dass onBoardUser eine Funktion zurückgibt), also speichern wir eine Funktion in einer Variablen addUsertoAccounts und jetzt hat die Variable eine Funktion, die jederzeit aufgerufen werden kann ein Argument, nach dem gefragt wird, also haben wir die anonyme Funktion (zurückgegeben von onBoardUser) aufgerufen, die in addUsertoAccounts mit einem Argument (Benutzerdetails, dh detailsOfJohn) gespeichert ist.
Sobald die Funktion aufgerufen wurde, hat sie die Ausführung der darin enthaltenen Anweisung abgeschlossen und die Ausgabe gedruckt.
Wenn die Funktionen auch nach etwa 10.000 Codezeilen aufgerufen würden, würde sie dieselbe Ausgabe drucken, da es sich um eine Schließung handelt, und sie merkt sich den lexikalischen Umfang davon.
Härtung mit ES6:
So können Sie die Funktion Currying mit Closures in JS verwenden.
Trotzdem haben Sie vielleicht eine Frage im Kopf: Wenn wir mehrere Argumente an eine Funktion übergeben können, warum brauchen wir dann überhaupt Curry?
Dies wird wahrscheinlich diese Zweifel beantworten.
warum es verwendet wird
Wieso den? Wieso den? Wieso den?
- Currying ist eine Technik, die Funktionen in kleinere Funktionen aufteilt, jede einzelne Funktion hat ihre eigene Arbeit und das macht Ihre Funktion rein und weniger anfällig für Fehler und Nebenwirkungen.
- Beispiel: Die erste Funktion validiert Benutzerdetails, die zweite validiert Firmendetails usw.
- Es wird in der funktionalen Programmierung verwendet, um Funktionen höherer Ordnung zu verwenden
- Es hilft Ihnen, Ihren Code sauber und organisiert zu halten.
- Außerdem können Sie Currying als Mechanismus verwenden, mit dem Sie überprüfen können, ob Sie alles haben, bevor Sie fortfahren
- Beispiel: Jede verschachtelte Funktion wird nicht ausgeführt, wenn sie nicht die erforderlichen Argumente erhält.

![Was ist überhaupt eine verknüpfte Liste? [Teil 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































