JavaScript arbeitet in einer Single-Threaded-Umgebung, das heißt, es führt jeweils eine Aufgabe aus. Es verwaltet die Ausführung von Code in Ausführungskontexten (EC), die entweder global oder funktional sein können.
Globaler Ausführungskontext (GEC)
Erstellt, wenn die Codedatei geladen wird.
Der GEC ist für die Einrichtung des globalen Objekts (in Browsern das Fenster) und des Schlüsselworts this verantwortlich.
Alle im globalen Bereich deklarierten Variablen und Funktionen werden im globalen EC gespeichert.
Ausführungskontextphasen
Speichererstellungsphase:
Während der Speicherphase reserviert JavaScript Speicher für Variablen und Funktionen.
Variablen wird zunächst der Wert undefiniert zugewiesen, während Funktionen mit ihrer vollständigen Definition im Speicher gespeichert werden.
Ausführungsphase:
Nach der Speicherzuweisungsphase beginnt JavaScript, den Code Zeile für Zeile auszuführen.
Variablen werden aktuelle Werte zugewiesen und Funktionen ausgeführt.
Funktionaler Ausführungskontext (FEC)
Immer wenn eine Funktion aufgerufen wird, erstellt JavaScript einen neuen Ausführungskontext speziell für diese Funktion.
Der Ausführungskontext für jede Funktion besteht aus zwei Phasen:
Speicherphase: Speicher wird den lokalen Variablen und Funktionen innerhalb der Funktion zugewiesen.
Ausführungsphase: Der Funktionskörper wird ausgeführt und Variablen erhalten ihre tatsächlichen Werte.
Nach der Ausführung wird der Ausführungskontext der Funktion zerstört, wodurch Speicher frei wird.
Rückgabeerklärungen
Sobald eine Funktion eine Return-Anweisung erreicht, wird die Funktion sofort beendet und ihr Ausführungskontext wird aus dem Aufrufstapel entfernt. Nach einer Return-Anweisung geschriebener Code wird nicht ausgeführt.
Der Aufrufstapel
JavaScript verwendet den Call Stack, um Ausführungskontexte zu verwalten.
Es wird das LIFO-Konzept (Last In, First Out) verwendet:
Wenn eine Funktion aufgerufen wird, wird ihr Ausführungskontext oben auf dem Stapel platziert.
Sobald die Funktion abgeschlossen ist (oder die Rückgabe erreicht), wird ihr Ausführungskontext vom Stapel entfernt.
JavaScript ist Single-Threaded
Single-Threaded bedeutet, dass JavaScript jeweils nur eine Operation ausführen kann, aber dennoch asynchrone Operationen ausführen kann. Das ist nicht so interessant. In meinem nächsten Beitrag werden wir über diese erstaunliche Funktionalität von JavaScript sprechen.
Das obige ist der detaillierte Inhalt vonWie funktioniert JS hinter den Kulissen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!