ES6 hat Fettpfeil- Funktionen ( =>
) hinzugefügt , die zwei Hauptunterschiede zu normalen Funktionen aufweisen:
- kürzere Syntax (einschließlich impliziter Rückgabe, wenn Sie einen Body mit einem Ausdruck verwenden)
this
vom umgebenden Bereich erben
Beides sind sehr nützliche Funktionen, aber sie scheinen mir in Wert und Anwendung völlig getrennt zu sein - manchmal möchte ich die eine oder die andere oder beide oder keine. Es scheint seltsam , dass , wenn ich eine kurze Syntax Funktion verwenden möchten, ich habe auch die Verwendung this
-modifying Verhalten. Und umgekehrt. Ich verstehe nicht, warum diese beiden Funktionen als einzelne Erweiterung der Sprache implementiert sind.
Was ist, wenn ich eine kurze Syntaxfunktion für ihre implizite Rückgabe und Kürze verwenden function (..) { return ...}
möchte (in einem Kontext, in dem ein vollständiger Code etwas weniger lesbar wäre), aber ich möchte this
in meiner Funktion auf den aufrufenden Kontext verweisen? Es gibt keine Möglichkeit, dies zu tun.
CoffeeScript hat sowohl ->
als auch =>
Stilfunktionen, und anscheinend hat ES6 den =>
Stil von dort ausgeliehen. Meine Frage ist also, warum hat ES6 den ->
Stil nicht auch ausgeliehen ?
quelle
arguments
.this
eine vollständige Funktionsdeklaration an den Abschluss binden . Dies ist jedoch möglicherweise nicht der Teil, um den Sie sich Sorgen machen.Antworten:
Siehe den Vorschlag zum Hinzufügen von Pfeilfunktionen: http://wiki.ecmascript.org/doku.php?id=harmony:arrow_function_syntax 1
Was es sagt, ist:
Sie können auch eine Diskussion über eine frühere Version des Vorschlags sehen, die ebenfalls die Syntax -> hatte: https://esdiscuss.org/topic/arrow-function-syntax-simplified
Es scheint sich um Folgendes zu handeln:
->
eine als selten nützlich erachtete Fußwaffe.quelle
function()
diese Bindung ein Fehler war und eine Warze auf die Sprache ist. Wenn sie könnten, würdenfunction()
sie die=>
Semantik ändern , aber sie können nicht, weil dies die Abwärtskompatibilität stören würde.function()
, umthis
vom umgebenden Bereich zu erben, wie es der=>
Fall ist? Würden Sie in diesem Fall nichtthis
überall auf das globale Objekt verweisen? Klingt komisch. Wo hast du das gehört?