Pfeilfunktionsbindung: Eine Erklärung
Bei der Verwendung von Pfeilfunktionen in JavaScript können Entwickler auf unerwartetes Verhalten hinsichtlich der Bindung von „this“ stoßen. Im Gegensatz zu regulären Funktionen behalten Pfeilfunktionen einen lexikalischen Gültigkeitsbereich bei, was bedeutet, dass sie die „this“-Bindung der Umgebung erben, in der sie definiert wurden. Daher ist es nicht möglich, „this“ innerhalb einer Pfeilfunktion erneut zu binden.
Betrachten Sie dieses Beispiel:
var f = () => console.log(this); var o = {'a': 42}; var fBound = f.bind(o); fBound();
In diesem Codeausschnitt versuchen wir, die Pfeilfunktion „f“ zu binden. zum Objekt 'o' mithilfe der Methode '.bind()'. Wenn wir jedoch „fBound“ aufrufen, gibt es das globale „window“-Objekt anstelle von „o“ aus.
Das liegt daran, dass Pfeilfunktionen ihre „this“-Bindung von der lexikalisch umschließenden Umgebung erben, was in diesem Fall der Fall ist ist der globale Ausführungskontext. Daher beziehen sich „f()“ und „fBound()“ immer auf das globale „this“.
Um dieses Problem zu vermeiden, wird empfohlen, reguläre Funktionen zu verwenden, wenn eine Bindung erforderlich ist. Diese Funktionen erstellen einen neuen Ausführungskontext, sodass Sie die Bindung „this“ mithilfe der Methode „.bind()“ explizit festlegen können.
Das obige ist der detaillierte Inhalt vonWarum funktioniert „bind()' nicht mit Pfeilfunktionen in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!