Ich weiß, dass der >=
Operator mehr als oder gleich bedeutet, aber ich habe gesehen=>
in einem Quellcode gesehen. Was bedeutet dieser Operator?
Hier ist der Code:
promiseTargetFile(fpParams, aSkipPrompt, relatedURI).then(aDialogAccepted => {
if (!aDialogAccepted)
return;
saveAsType = fpParams.saveAsType;
file = fpParams.file;
continueSave();
}).then(null, Components.utils.reportError);
javascript
syntax
ecmascript-6
arrow-functions
rpgs_player
quelle
quelle
Antworten:
Was es ist
Dies ist eine Pfeilfunktion. Pfeilfunktionen sind eine kurze Syntax, die von ECMAscript 6 eingeführt wurde und ähnlich wie Funktionsausdrücke verwendet werden kann. Mit anderen Worten, Sie können sie häufig anstelle von Ausdrücken wie verwenden
function (foo) {...}
. Aber sie haben einige wichtige Unterschiede. Zum Beispiel binden sie nicht ihre eigenen Werte vonthis
(siehe unten für die Diskussion).Pfeilfunktionen sind Teil der ECMAscript 6-Spezifikation. Sie werden noch nicht in allen Browsern unterstützt, aber sie werden in Node v. 4.0+ und in den meisten modernen Browsern, die ab 2018 verwendet werden, teilweise oder vollständig unterstützt . (Ich habe unten eine unvollständige Liste der unterstützenden Browser aufgeführt.)
Weitere Informationen finden Sie in der Mozilla-Dokumentation zu Pfeilfunktionen .
Aus der Mozilla-Dokumentation:
Ein Hinweis zum Wie
this
Funktionsweise von PfeilfunktionenEine der praktischsten Funktionen einer Pfeilfunktion ist im obigen Text enthalten:
Einfacher ausgedrückt bedeutet dies, dass die Pfeilfunktion den
this
Wert aus ihrem Kontext beibehält und keinen eigenen hatthis
. Eine traditionelle Funktion kann ihren eigenenthis
Wert binden , je nachdem, wie sie definiert und aufgerufen wird. Dies kann viel Gymnastik wieself = this;
usw. erfordern , umthis
von einer Funktion in eine andere Funktion zuzugreifen oder diese zu manipulieren . Weitere Informationen zu diesem Thema finden Sie in den Erläuterungen und Beispielen in der Mozilla-Dokumentation .Beispielcode
Beispiel (auch aus den Dokumenten):
Hinweise zur Kompatibilität
Sie können Pfeilfunktionen in Node verwenden, aber die Browserunterstützung ist unvollständig.
Die Browserunterstützung für diese Funktionalität hat sich erheblich verbessert, ist jedoch für die meisten browserbasierten Anwendungen noch nicht weit genug verbreitet. Ab dem 12. Dezember 2017 wird es in aktuellen Versionen von unterstützt:
Nicht unterstützt in:
Weitere (und aktuellere) Informationen finden Sie auf CanIUse.com (keine Zugehörigkeit).
quelle
Dies ist als Pfeilfunktion bekannt und Teil der ECMAScript 2015-Spezifikation ...
Kürzere Syntax als die vorherige:
DEMO
Die andere tolle Sache ist lexikalisch
this
... Normalerweise machst du so etwas wie:Aber das könnte mit dem Pfeil wie folgt umgeschrieben werden:
DEMO
MDN
Mehr zur Syntax
Weitere, hier ist eine ziemlich gute Antwort für , wenn Funktionen verwenden Pfeil.
quelle
Dies wäre der in ECMAScript 6 eingeführte "Pfeilfunktionsausdruck".
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/arrow_functions
Aus historischen Gründen (wenn sich die Wiki-Seite später ändert) gilt Folgendes:
quelle
Dies sind Pfeilfunktionen
Auch als Fettpfeilfunktionen bekannt . Sie sind eine saubere und konsistente Möglichkeit, Funktionsausdrücke zu schreiben, z
function() {}
.Pfeil Funktionen kann die Notwendigkeit entfernen
function
,return
und{}
wenn Funktionen definieren. Sie sind Einzeiler, ähnlich wie Lambda Expressions in Java oder Python.Beispiel ohne Parameter
Wenn mehrere Anweisungen innerhalb derselben
queue[0]
Pfeilfunktion gemacht werden müssen, müssen Sie in diesem Beispiel in Curley-Klammern setzen{}
. In diesem Fall kann die return-Anweisung nicht weggelassen werden.Beispiel mit 1 Parameter
Sie können oben weglassen
{}
.Wenn es einen einzelnen Parameter gibt, können die Klammern
()
um den Parameter weggelassen werden.Beispiel mit mehreren Parametern
Ein nützliches Beispiel
Wenn wir den Preis für jede Frucht in einem einzigen Array erhalten wollten, könnten wir in ES5 Folgendes tun:
In ES6 mit den neuen Pfeilfunktionen können wir dies präziser gestalten:
Weitere Informationen zu Pfeilfunktionen finden Sie hier .
Browser-Kompatibilität
Weitere aktuelle Informationen zur Browserkompatibilität finden Sie hier
quelle
Nur um ein weiteres Beispiel hinzuzufügen, was ein Lambda ohne Verwendung einer Karte tun kann:
quelle
Wie andere gesagt haben, ist es eine neue Syntax zum Erstellen von Funktionen.
Diese Art von Funktionen unterscheidet sich jedoch von normalen:
Sie binden den
this
Wert. Wie durch die Spezifikation erklärt ,Sie sind keine Konstruktoren.
Das heißt, sie haben keine interne Methode und können daher nicht instanziiert werden, z
quelle
Ich habe gelesen, das ist ein Symbol von
Arrow Functions
inES6
diese
using
Arrow Function
kann geschrieben werden alsMDN Docs
quelle
Hinzufügen eines einfachen CRUD-Beispiels mit Arrowfunction
quelle
Unzufrieden mit den anderen Antworten. Die am häufigsten gewählte Antwort vom 13.3.2019 ist sachlich falsch.
Die kurze, knappe Version von
=>
bedeutet, dass es sich um eine Verknüpfung handelt, die eine Funktion schreibt UND sie an den aktuellen Wert bindetthis
Ist effektiv eine Abkürzung für
Sie können alle Dinge sehen, die gekürzt wurden. Wir brauchten
function
wederreturn
noch.bind(this)
noch Klammern oder KlammernEin etwas längeres Beispiel für eine Pfeilfunktion könnte sein
Zeigen, dass wir, wenn wir mehrere Argumente für die Funktion wünschen, Klammern benötigen und wenn wir mehr als einen einzelnen Ausdruck schreiben möchten, Klammern und einen expliziten Ausdruck benötigen
return
.Es ist wichtig, den
.bind
Teil zu verstehen und es ist ein großes Thema. Es hat damit zu tun, wasthis
in JavaScript bedeutet.ALLE Funktionen haben einen impliziten Parameter namens
this
. Wiethis
beim Aufrufen einer Funktion festgelegt wird, hängt davon ab, wie diese Funktion aufgerufen wird.Nehmen
Wenn Sie es normal nennen
this
wird das globale Objekt sein.Wenn Sie sich im strengen Modus befinden
Es wird sein
undefined
Sie können
this
direkt mitcall
oder einstellenapply
Sie können auch
this
implizit mit dem Punktoperator festlegen.
Ein Problem tritt auf, wenn Sie eine Funktion als Rückruf oder Listener verwenden möchten. Sie erstellen eine Klasse und möchten eine Funktion als Rückruf zuweisen, die auf eine Instanz der Klasse zugreift.
Der obige Code funktioniert nicht, da der
this
Wert nicht die Instanz der Klasse ist, wenn das Element das Ereignis auslöst und die Funktion aufruft .Ein üblicher Weg, um dieses Problem zu lösen, ist die Verwendung
.bind
Weil die Pfeilsyntax dasselbe tut, was wir schreiben können
bind
macht effektiv eine neue Funktion . Wennbind
es das nicht gäbe, könnten Sie es sich im Grunde so machenIn älterem JavaScript ohne den Spread-Operator wäre dies der Fall
Um diesen Code zu verstehen, müssen Sie die Schließungen verstehen. In der Kurzversion wird jedoch
bind
eine neue Funktion erstellt, die immer die ursprüngliche Funktion mit demthis
daran gebundenen Wert aufruft . Die Pfeilfunktion macht dasselbe, da sie eine Abkürzung für istbind(this)
quelle
Wie alle anderen Antworten bereits gesagt haben, ist es Teil der ES2015-Pfeilfunktionssyntax. Insbesondere handelt es sich nicht um einen Operator, sondern um ein Interpunktionszeichen, das die Parameter vom Textkörper trennt :
ArrowFunction : ArrowParameters => ConciseBody
. ZB(params) => { /* body */ }
.quelle
ES6
Pfeilfunktionen:In Javascript
=>
ist das das Symbol eines Pfeilfunktionsausdrucks. Ein Pfeilfunktionsausdruck hat keine eigenethis
Bindung und kann daher nicht als Konstruktorfunktion verwendet werden. zum Beispiel:Regeln für die Verwendung von Pfeilfunktionen:
{}
diereturn
Anweisung und weglassenZum Beispiel:
quelle
Mit Pfeilfunktionen, die mit dem Symbol (=>) gekennzeichnet sind, können Sie anonyme Funktionen und Methoden erstellen. Das führt zu einer kürzeren Syntax. Im Folgenden finden Sie beispielsweise eine einfache Funktion zum Hinzufügen, die die Addition von zwei Zahlen zurückgibt.
Die obige Funktion wird durch Verwendung der unten gezeigten "Arrow" -Syntax kürzer.
Der obige Code besteht aus zwei Teilen, wie in der obigen Abbildung gezeigt: -
Eingabe: - In diesem Abschnitt werden die Eingabeparameter für die anonyme Funktion angegeben.
Logik: - Dieser Abschnitt steht nach dem Symbol „=>“. Dieser Abschnitt enthält die Logik der eigentlichen Funktion.
Viele Entwickler glauben, dass die Pfeilfunktion Ihre Syntax kürzer und einfacher macht und somit Ihren Code lesbar macht.
Wenn Sie dem obigen Satz glauben, dann versichere ich Ihnen, dass es ein Mythos ist. Wenn Sie für einen Moment denken, dass eine richtig geschriebene Funktion mit Namen viel lesbarer ist als kryptische Funktionen, die in einer Zeile mit einem Pfeilsymbol erstellt wurden.
Siehe den folgenden Code, in dem eine globale Variable "Kontext" definiert ist. Auf diese globale Variable wird innerhalb einer Funktion "SomeOtherMethod" zugegriffen, die von einer anderen Methode "SomeMethod" aufgerufen wird.
Diese "SomeMethod" hat eine lokale "Kontext" -Variable. Da "SomeOtherMethod" von "SomeMethod" aufgerufen wird, erwarten wir, dass "lokaler Kontext" angezeigt wird, aber "globaler Kontext".
Wenn Sie den Anruf jedoch durch Verwendung der Pfeilfunktion ersetzen, wird "lokaler Kontext" angezeigt.
Ich möchte Sie ermutigen, diesen Link zu lesen ( Pfeilfunktion in JavaScript ) , der alle Szenarien des Javascript-Kontexts erklärt und in welchen Szenarien der Aufruferkontext nicht berücksichtigt wird.
Sie können auch die Demonstration der Pfeilfunktion mit Javascript in diesem Youtube-Video sehen, das praktisch den Begriff Kontext demonstriert.
quelle
Wie andere angegeben haben, werden reguläre (traditionelle) Funktionen
this
von dem Objekt verwendet, das die Funktion aufgerufen hat (z. B. eine Schaltfläche, auf die geklickt wurde) . Stattdessen werden Pfeilfunktionenthis
von dem Objekt verwendet, das die Funktion definiert.Betrachten Sie zwei nahezu identische Funktionen:
Das folgende Snippet zeigt den grundlegenden Unterschied zwischen den
this
Darstellungen für jede Funktion. Die reguläre Funktion wird ausgegeben,[object HTMLButtonElement]
während die Pfeilfunktion ausgegeben wird[object Window]
.quelle