MDN sagt von arrow functions:
Beziehung mit striktem Modus
Da this
lexikalisch ist, strenge Modus Regeln im Hinblick auf this
nur ignoriert werden.
var f =() => {'use strict'; return this};
f() === window; // or the global object
Die Regeln der lexikalischen this
haben Vorrang vor den strengen-Modus this
Regeln.
können wir dies leicht sehen, in der ES2015-Spezifikation durch die Klar Englisch Beschreibung der möglichen Werte für a function's [[ThisMode]]
slot untersuchen, welche lexical
sein kann, strict
oder global
:
Legt fest, wie this
Referenzen innerhalb der interpretiert werden Formalparameter und Code-Rumpf der Funktion. lexical
bedeutet, dass this
sich auf den this
Wert einer lexikalisch umschließenden Funktion bezieht. strict
bedeutet, dass der Wert this
genau so verwendet wird, wie durch einen Aufruf der Funktion bereitgestellt. global
bedeutet, dass ein this
Wert von undefined
als eine Referenz auf das globale Objekt interpretiert wird.
Mit anderen Worten, das Verhalten einer Funktion this
kann entweder streng, nicht-strikt oder lexikalisch sein. Wenn die Funktion [[ThisMode]]
lexikalisch ist (wie es für eine Pfeilfunktion der Fall ist), macht sie den strikten/nicht-strikten Status der Funktion irrelevant für das Bestimmen des this
-Einstellungsverhaltens.
Da Sie dies im globalen Bereich ausführen (wo 'das' das 'Fenster'-Objekt ist) und' das' in Pfeilfunktionen lexikalisch ist, sehe ich nicht, was hier unerwartet ist? – Bergi