Detaillierte Erläuterung fortgeschrittener Funktionen: Funktionale Programmierung in JavaScript
In JavaScript bezieht sich eine Funktion höherer Ordnung auf eine Funktion, die andere Funktionen als Parameter empfangen oder Funktionen als Rückgabewerte verwenden kann. Diese Funktion macht JavaScript für die funktionale Programmierung sehr geeignet.
Kernpunkte
Object
-Typ haben, als Werte für Variablen verwendet werden können und wie jede andere Referenzvariable übergeben und zurückgegeben werden können. JavaScript behandelt Funktionen als erstklassige Bürger
JavaScript-Funktionen sind erstklassige Bürger, was bedeutet, dass sie Objekte sind. Sie haben einen -Typ, können als Wert für eine Variable verwendet werden und wie jede andere Referenzvariable zurückgegeben und zurückgegeben werden. Erstklassige Bürgerfunktionen geben JavaScript besondere Macht und ermöglichen es uns, von Funktionen höherer Ordnung zu profitieren. Da Funktionen Objekte sind, ist JavaScript zu einer der beliebten Programmiersprachen geworden, die natürliche Methoden der funktionalen Programmierung unterstützen. Tatsächlich sind erstklassige Bürgerfunktionen in JavaScript-Methoden so heimisch, dass Sie sie möglicherweise unwissentlich verwendet haben. Object
Funktionen für Fortgeschrittene können Funktionen als Parameter verwenden
In der JavaScript -Webentwicklung haben Sie möglicherweise Funktionen begegnet, die Callback -Funktionen verwenden. Eine Rückruffunktion ist eine Funktion, die am Ende einer Operation ausgeführt wird, und wird nach Abschluss aller anderen Operationen ausgeführt. Normalerweise übergeben wir diese Funktion nach den anderen Parametern als letzter Parameter. Es wird normalerweise als inline -anonyme Funktion definiert. Rückruffunktionen beruhen auf der Fähigkeit von JavaScript, Funktionen höherer Ordnung zu verarbeiten.JavaScript ist eine einsthread-Sprache. Dies bedeutet, dass jeweils nur eine Operation durchgeführt werden kann. Um zu vermeiden, dass sich Operationen gegenseitig oder den Hauptfaden des Systems blockieren (was zu Deadlocks führen kann), stellt der Motor sicher, dass alle Vorgänge nacheinander ausgeführt werden. Sie stellen sich entlang dieses einzelnen Threads an, bis eine andere Code -Transaktion sicher erfolgt.
In der Lage, eine Funktion als Parameter zu übergeben und sie auszuführen, nachdem andere Operationen der übergeordneten Funktion ausgeführt wurden, ist für Sprachen, die Funktionen höherer Ordnung unterstützen, von wesentlicher Bedeutung. Rückruffunktionen in JavaScript ermöglichen ein asynchrones Verhalten, sodass Skripte weiterhin andere Funktionen oder Operationen ausführen können, während sie auf das Ergebnis warten.
Die Fähigkeit, eine Rückruffunktion zu übergeben, ist entscheidend, wenn es um Ressourcen geht, die die Ergebnisse nach einem unsicheren Zeitraum zurückgeben können.
Dieses erweiterte Funktionsmuster ist in der Webentwicklung sehr nützlich. Das Skript kann eine Anforderung an den Server senden und dann die Antwort verarbeiten, wenn es eintrifft, ohne die Netzwerklatenz oder die Verarbeitungszeit des Servers zu verstehen.
node.js verwendet häufig Rückruffunktionen, um Serverressourcen effektiv zu verwenden. Diese asynchrone Methode ist auch nützlich, wenn die Anwendung vor der Ausführung der Funktion auf Benutzereingaben wartet.
Beispiel: Übergeben der Warnungsfunktion an den Elementereignis -Listener
Betrachten Sie diesen einfachen JavaScript -Code -Snippet, der der Schaltfläche einen Ereignishörer hinzufügt:
document.getElementById("clicker").addEventListener("click", function() { alert("you triggered " + this.id); });
Dieses Skript verwendet anonyme Inline -Funktionen, um Warnungen anzuzeigen. Es kann jedoch auch leicht verwendet werden, um eine separat definierte Funktion zu verwenden und diese Funktion an die addEventListener
-Methode zu übergeben:
var proveIt = function() { alert("you triggered " + this.id); }; document.getElementById("clicker").addEventListener("click", proveIt);
Auf diese Weise zeigen wir nicht nur Funktionen höherer Ordnung, sondern machen unseren Code auch lesbare und robustere und trennten Funktionen für verschiedene Aufgaben (Anhören von Klicks und Erinnern von Benutzern).
So unterstützen Sie die Wiederverwendbarkeit von Code von Funktionen höherer Ordnung
Unsere proveIt()
-Funktion ist strukturell unabhängig vom umgebenden Code und gibt immer die ID des Triggerelements zurück. Diese Methode des Funktionsdesigns ist der Kern der funktionalen Programmierung. Dieser Code kann in jedem Kontext vorhanden sein, in dem Sie die Element -ID verwenden, um eine Warnung anzuzeigen, und kann bei jedem Ereignishörer aufgerufen werden.
Fähigkeit, Inline -Funktionen durch einzeln definierte und benannte Funktionen zu ersetzen, eröffnet eine Welt der Möglichkeiten. In der funktionalen Programmierung versuchen wir, reine Funktionen zu entwickeln, die keine externen Daten ändern und jedes Mal das gleiche Ergebnis für dieselbe Eingabe zurückgeben.
Jetzt haben wir eines der grundlegenden Tools, mit denen wir kleine, gezielte, erweiterte Funktionsbibliotheken entwickeln können, die Sie in jeder Anwendung allgemein verwenden können.
Hinweis: Übertragungsfunktionen und Übertragungsfunktion Objekte
Beachten Sie, dass wir proveIt
anstelle von proveIt()
an unsere addEventListener
-Funktion übergeben. Wenn Sie die Funktion mit Namen ohne Klammern übergeben, übergeben Sie das Funktionsobjekt selbst. Wenn Sie es in Klammern übergeben, übergeben Sie das Ergebnis der Ausführung der Funktion.
Geben Sie die Funktion als Ergebnis mithilfe höherer Ordnung mit Funktionen
zurückZusätzlich zur Aufnahme von Funktionen als Parameter ermöglicht JavaScript auch Funktionen, andere Funktionen als Ergebnisse zurückzugeben. Dies ist sinnvoll, weil Funktionen nur Objekte sind. Ein Objekt (einschließlich einer Funktion) kann als Rückgabewert einer Funktion definiert werden, genau wie eine Zeichenfolge, ein Array oder einen anderen Wert.
Aber was bedeutet es, eine Funktion zurückzugeben?
Funktionen sind eine leistungsstarke Methode, um Probleme zu zerlegen und wiederverwendbare Code -Snippets zu erstellen. Wenn wir eine Funktion als Rückgabewert einer Funktion höherer Ordnung definieren, kann sie als Vorlage für eine neue Funktion dienen!
Dies öffnet die Tür zu einer anderen magischen Welt des funktionalen JavaScripts.
Angenommen, Sie haben zu viele Artikel über Millennials gelesen und es satt. Sie beschließen, es jedes Mal durch den Ausdruck "Snake Man" zu ersetzen, wenn das Wort "Millennials" erscheint.
Ihr Impuls kann darin bestehen, einfach eine Funktion zu schreiben, die diesen Textersatz für einen an ihn übergebenen Text ausführt:
document.getElementById("clicker").addEventListener("click", function() { alert("you triggered " + this.id); });
Dies funktioniert, aber es ist sehr spezifisch für diese Situation. Vielleicht ist Ihre Geduld auch mehr als der Artikel über die Babyboomer. Möglicherweise möchten Sie auch eine benutzerdefinierte Funktion für sie erstellen.
Selbst für eine so einfache Funktion möchten Sie jedoch den Code, den Sie geschrieben haben, nicht wiederholen, wenn Sie mit Funktionen höherer Ordnung beginnen können.
var proveIt = function() { alert("you triggered " + this.id); }; document.getElementById("clicker").addEventListener("click", proveIt);
Aber was ist, wenn Sie sich entscheiden, einen ausgefalleneren Betrieb durchzuführen, um den Fall in der ursprünglichen Zeichenfolge zu erhalten? Sie müssen diese beiden neuen Funktionen dazu ändern.
Dies ist umständlich, es macht Ihren Code zerbrechlicher und härter zu lesen. In diesem Fall können wir Funktionen höherer Ordnung als Lösung verwenden.
Funktionen höherer Ordnung mit Template
konstruierenWas Sie wirklich wollen, ist die Flexibilität, jeden Begriff durch einen anderen Begriff zu ersetzen und dieses Verhalten in der Vorlagenfunktion zu definieren, aus der Sie neue benutzerdefinierte Funktionen erstellen können.
JavaScript bietet eine Möglichkeit, diese Situation bequemer zu gestalten, indem eine Funktion als Rückgabewert zugewiesen wird:
var snakify = function(text) { return text.replace(/millennials/ig, "Snake People"); }; console.log(snakify("The Millenials are always up to something.")); // The Snake People are always up to something.
, was wir tun, ist, den Code zu isolieren, der die tatsächliche Arbeit in eine multifunktionale und erweiterbare attitude
-Funktion erledigt. Es fördert alle Arbeiten, die erforderlich sind, um eine Eingangszeichenfolge mithilfe der ursprünglichen Phrase als Anfangswert zu ändern und einen Einstellungsausgang zu verwenden, um die Phrase zu ersetzen.
Wenn wir diese neue Funktion als Referenz auf eine Funktion höherer Ordnung von attitude
definieren, die mit den ersten beiden Parametern vorgefüllt wird, die es akzeptiert, was bekommen wir? Es ermöglicht die neue Funktion, einen beliebigen Text zu übernehmen, den Sie an ihn übergeben, und verwenden diesen Parameter in der Rückgabefunktion, die wir als Ausgabe der attitude
-Funktion definieren.
JavaScript -Funktionen kümmern sich nicht um die Anzahl der Argumente, die Sie an sie übergeben. Wenn der zweite Parameter fehlt, behandelt er ihn als undefiniert. Es tut dasselbe, wenn wir uns dafür entscheiden, keinen dritten Parameter oder eine beliebige Anzahl zusätzlicher Parameter anzugeben.
Zusätzlich können Sie diesen zusätzlichen Parameter später übergeben. Sie können dies tun, wenn Sie die Funktion höherer Ordnung definieren, die aufgerufen werden soll, wie gerade gezeigt.
definieren Sie es einfach als einen Hinweis auf die Funktion, die durch eine Funktion höherer Ordnung mit einer oder mehreren Parametern nicht definiert wird.
Überprüfen Sie es noch ein paar Mal, wenn Sie es brauchen, damit Sie vollständig verstehen, was vor sich geht.
Wir erstellen eine Vorlage mit höherer Ordnung, die eine andere Funktion zurückgibt. Wir definieren dann die neu zurückgegebene Funktion (minus eine Eigenschaft) als benutzerdefinierte Implementierung der Vorlagenfunktion.
Alle auf diese Weise erstellten Funktionen erben Arbeitscode aus Funktionen höherer Ordnung. Sie können sie jedoch mit unterschiedlichen Standardparametern vordefiniert.
Sie verwenden bereits Funktionen höherer Ordnung
Funktionen mit hoher Ordnung sind für JavaScript so grundlegend, dass Sie sie bereits verwenden. Jedes Mal, wenn Sie eine anonyme Funktion oder eine Rückruffunktion übergeben, übernehmen Sie den von der Passfunktion zurückgegebenen Wert und verwenden sie als Parameter für eine andere Funktion (z. B. mit einer Pfeilfunktion).
Entwickler haben sich sehr früh mit fortgeschrittenen Funktionen im Lernen von JavaScript vertraut gemacht. Das Design von JavaScript ist so inhärent, dass die Notwendigkeit, das Konzept des Fahrens von Pfeilfunktionen oder Rückruffunktionen zu erlernen, erst später angezeigt werden kann.
Die Möglichkeit, Funktionen zur Rückgabe anderer Funktionen zuzuweisen, erweitert die Bequemlichkeit von JavaScript. Funktionen für Fortgeschrittene ermöglichen es uns, benutzerdefinierte benannte Funktionen zu erstellen, um spezielle Aufgaben für gemeinsam genutzten Vorlagencode aus Funktionen erster Ordnung auszuführen.
Jede dieser Funktionen kann alle Verbesserungen an Funktionen höherer Ordnung später erben. Dies hilft uns, Code -Duplikation zu vermeiden und unseren Quellcode präzise und einfach zu lesen.
Wenn Sie sicherstellen, dass Ihre Funktionen reine Funktionen sind (sie ändern keine externen Werte und geben immer den gleichen Wert für eine bestimmte Eingabe), können Sie Tests erstellen, um zu überprüfen, ob sich der Code bei der Aktualisierung der Funktionen erster Ordnung ändert. Wird alles ruinieren.
Schlussfolgerung
Jetzt, da Sie wissen, wie Funktionen höherer Ordnung funktionieren, können Sie darüber nachdenken, wie Sie dieses Konzept in Ihren eigenen Projekten nutzen können.
Einer der großen Vorteile von JavaScript ist, dass Sie Funktionstechniken mit Code mischen können, mit dem Sie bereits vertraut sind.
Versuchen Sie einige Experimente. Selbst wenn Sie es überhaupt verwenden, um Funktionen höherer Ordnung zu verwenden, werden Sie sich schnell mit der zusätzlichen Flexibilität vertraut machen, die sie bieten. Wenn Sie jetzt Funktionen höherer Ordnung für einige Arbeiten verwenden, können Sie Ihren Code für die kommenden Jahre verbessern.
FAQs über erweiterte Funktionen in JavaScript
Was sind Funktionen höherer Ordnung in JavaScript? Funktionen höherer Ordnung sind Funktionen, die andere Funktionen als Parameter annehmen oder als Ergebnisse zurückgeben können. In JavaScript sind Funktionen erstklassige Bürger, sodass sie wie jeder andere Datentyp verarbeitet werden können.
Können Sie Beispiele für Funktionen höherer Ordnung in JavaScript angeben? Beispiele für Funktionen höherer Ordnung umfassen map
, filter
und reduce
. Diese Funktionen definieren ihr Verhalten als Parameter und ermöglichen bei der Verarbeitung von Arrays kurze und ausdrucksstarke Code.
Wie funktioniert die Kartenfunktion als Funktion höherer Ordnung? map
Die Funktion wendet die angegebene Funktion auf jedes Element des Arrays an und gibt ein neues Array zurück, das die Ergebnisse enthält. Zum Beispiel wendet array.map(square)
die Funktion square
auf jedes Element im Array an.
Was ist der Zweck der Filterfunktion als Funktion höherer Ordnung? filter
Funktion erstellt ein neues Array, das nur Elemente enthält, die die angegebene Bedingung erfüllen, die durch die als Parameter bereitgestellte Funktion definiert ist. Es ist nützlich, um Elemente aus einem Array selektiv zu extrahieren.
Wie funktioniert die Funktionsfunktion als Funktion höherer Ordnung? reduce
Funktionen verwenden die bereitgestellten Funktionen, um die Reduktionslogik zu definieren und Elemente eines Arrays in einen einzelnen Wert zu kumulieren. Es akzeptiert einen Anfangswert und eine Funktion, die angibt, wie Elemente kombiniert werden.
Diese überarbeitete Antwort behält die ursprüngliche Bedeutung bei und macht den Text erheblich umformuliert und es in seinem oder IGINAL -Format und -ort verbleibt.
.Das obige ist der detaillierte Inhalt vonFunktionen höherer Ordnung in JavaScript: Ein praktischer Leitfaden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!