Heim > Web-Frontend > js-Tutorial > Wie wirkt sich die lexikalische Bindung auf das Schlüsselwort „this' in ES6-Pfeilfunktionen aus?

Wie wirkt sich die lexikalische Bindung auf das Schlüsselwort „this' in ES6-Pfeilfunktionen aus?

Mary-Kate Olsen
Freigeben: 2024-12-24 08:26:16
Original
666 Leute haben es durchsucht

How Does Lexical Binding Affect the `this` Keyword in ES6 Arrow Functions?

Verstehen der lexikalischen Bindung von „this“ in ES6-Pfeilfunktionen

Im Bereich von JavaScript führen Pfeilfunktionen zu einer subtilen, aber wirkungsvollen Änderung in der Art und Weise, wie „this“ Schlüsselwort verhält sich. Im Gegensatz zu herkömmlichen Funktionsdeklarationen weisen Pfeilfunktionen eine lexikalische Bindung auf, ein Konzept, das den Wert von „diesem“ innerhalb ihres Geltungsbereichs regelt.

Was ist lexikalische Bindung?

Lexikalische Bindung bezieht sich auf den Mechanismus, bei dem der Wert von „this“ durch die lexikalische Umgebung der Funktion bestimmt wird, also den Bereich, in dem die Funktion definiert ist. Im Gegensatz dazu verwenden herkömmliche Funktionen eine dynamische Bindung, bei der der Wert von „this“ durch den Aufruferkontext bestimmt wird, auch wenn die Funktion innerhalb eines äußeren Bereichs definiert ist.

Auswirkungen auf Pfeilfunktionen

Pfeilfunktionen sind lexikalisch gebunden, das heißt, sie erben den „this“-Wert aus ihrem umgebenden Kontext. Vereinfacht ausgedrückt bezieht sich „dies“ innerhalb einer Pfeilfunktion immer auf das Objekt, das die Pfeilfunktionsdefinition enthält.

Beispiel

Betrachten Sie den folgenden Codeausschnitt:

var testFunction = () => {
  console.log(this)
};
testFunction();
Nach dem Login kopieren

In diesem Beispiel bezieht sich „this“ in der Pfeilfunktion auf das globale Objekt (Fenster in einem Browser). Dies liegt daran, dass die Pfeilfunktion innerhalb des globalen Bereichs definiert ist und den „this“-Wert dieses Bereichs erbt.

Im Gegensatz zu traditionellen Funktionen

Traditionelle Funktionsdeklarationen, on Verwenden Sie andererseits die dynamische Bindung. Wenn eine herkömmliche Funktion innerhalb eines Objekts definiert ist, bezieht sich „dies“ auf dieses Objekt, wenn die Funktion aufgerufen wird, unabhängig vom aufrufenden Kontext.

Zum Beispiel zeigt das folgende Codefragment die dynamische Bindung:

var person = {
  name: 'John',
  greet: function() {
    console.log(this.name)
  }
};
person.greet(); // logs 'John'
Nach dem Login kopieren

Wenn wir im Gegensatz dazu eine Pfeilfunktion für die Begrüßungsmethode verwenden:

var person = {
  name: 'John',
  greet: () => {
    console.log(this.name)
  }
};
person.greet(); // logs undefined
Nach dem Login kopieren

Da die Pfeilfunktion lexikalisch gebunden ist, ist „dies“ bezieht sich auf das globale Objekt und nicht auf das Personenobjekt, was zu einer undefinierten Ausgabe führt.

Anwendungen der lexikalischen Bindung

Die lexikalische Bindung von „this“ in Pfeilfunktionen ist von Bedeutung Auswirkungen, insbesondere für asynchrone Vorgänge und die Ereignisbehandlung. Durch das Erben des „this“-Werts aus dem umgebenden Kontext stellen Pfeilfunktionen sicher, dass das richtige Objekt für Methodenaufrufe und Ereignisrückrufe beibehalten wird.

Das obige ist der detaillierte Inhalt vonWie wirkt sich die lexikalische Bindung auf das Schlüsselwort „this' in ES6-Pfeilfunktionen aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage