Javascript-Kompilierungsprozess
Javascript ist zu einer wesentlichen Fähigkeit für die Webentwicklung geworden. Es ist nicht nur auf den Browser beschränkt, sondern wird auch häufig in verschiedenen Anwendungsszenarien wie Node.js, mobilen Terminals, Desktop-Terminals und eingebetteten Geräten verwendet. Bei der Ausführung von Javascript gibt es ein sehr wichtiges Konzept, nämlich den Kompilierungsprozess. In diesem Artikel wird der Ausführungsprozess von Javascript aus der Perspektive des Kompilierungsprozesses vorgestellt.
Was ist der Kompilierungsprozess?
Der Kompilierungsprozess ist der Prozess der Konvertierung von Quellcode in ausführbaren Code. In Javascript kann der Kompilierungsprozess in zwei Phasen unterteilt werden: die Analysephase und die Ausführungsphase.
Parsing-Phase
Die Parsing-Phase ist in zwei Teile unterteilt: lexikalische Analyse und Syntaxanalyse.
lexikalische Analyse
Die Aufgabe der lexikalischen Analyse besteht darin, den Quellcode in lexikalische Einheiten (Tokens) zu zerlegen, die die kleinsten Einheiten der Sprache sind. Zu den lexikalischen Einheiten gehören Schlüsselwörter (z. B. Funktion, Variable), Bezeichner (z. B. Variablennamen und Funktionsnamen) und Operatoren (z. B. +, -, *, / usw.).
Das Folgende ist beispielsweise eine einfache Funktionsdeklaration:
function add(x, y) { return x + y; }
Diese Funktionsdeklaration wird in die folgenden lexikalischen Einheiten unterteilt:
Keyword 'function' Identifier 'add' Punctuator '(' Identifier 'x' Punctuator ',' Identifier 'y' Punctuator ')' Punctuator '{' Keyword 'return' Identifier 'x' Punctuator '+' Identifier 'y' Punctuator ';' Punctuator '}'
Syntaktische Analyse
Die Aufgabe der Syntaxanalyse besteht darin, lexikalische Einheiten in abstrakte Syntaxbäume (AST) umzuwandeln. Ein abstrakter Syntaxbaum ist eine Datenstruktur, die die Syntaxstruktur von Code in einer Baumstruktur darstellt. Jeder Knoten stellt ein Konstrukt in der grammatikalischen Struktur dar, und die Unterknoten stellen Unterkonstrukte des Konstrukts dar.
Für die obige Funktionsdeklaration sieht der generierte abstrakte Syntaxbaum beispielsweise folgendermaßen aus:
{ "type": "FunctionDeclaration", "id": { "type": "Identifier", "name": "add" }, "params": [ { "type": "Identifier", "name": "x" }, { "type": "Identifier", "name": "y" } ], "body": { "type": "BlockStatement", "body": [ { "type": "ReturnStatement", "argument": { "type": "BinaryExpression", "operator": "+", "left": { "type": "Identifier", "name": "x" }, "right": { "type": "Identifier", "name": "y" } } } ] } }
Ausführungsphase
Nach der Parsing-Phase ist abgeschlossen, Javascript Das Programm tritt in die Ausführungsphase ein. Die Aufgabe der Ausführungsphase besteht darin, den abstrakten Syntaxbaum auszuführen.
Der Prozess der Ausführung eines abstrakten Syntaxbaums kann in zwei Phasen unterteilt werden: Vorkompilierung und Ausführung.
Vorkompilierung
Die Aufgabe der Vorkompilierung besteht darin, Variablen- und Funktionsdeklarationen zu verarbeiten. Bevor die Ausführungsphase beginnt, scannt die Javascript-Engine den abstrakten Syntaxbaum des Programms und erstellt entsprechende Variablen und Funktionen im aktuellen Bereich. Dieser Vorgang wird als Bereichsvorverarbeitung bezeichnet.
Zuerst werden alle Funktionsdeklarationen erweitert. Dieser Vorgang wird als Function Declarations Hoisting bezeichnet. Der Kern des Hebens von Funktionsdeklarationen besteht darin, den Funktionsnamen und den Funktionskörper an die Spitze des aktuellen Bereichs zu heben, sodass die Funktion aufgerufen werden kann, bevor die Funktion deklariert wird.
Der folgende Code:
add(1, 2); function add(x, y) { return x + y; }
entspricht:
function add(x, y) { return x + y; } add(1, 2);
Zweitens: Deklarieren Sie alle Variablen im Voraus Förderung (Variables Heben). Es ist zu beachten, dass die Variablenförderung nur die Deklaration der Variablen fördert, nicht jedoch die Zuweisungsanweisung der Variablen.
Zum Beispiel ist der folgende Code:
console.log(a); var a = 1;
äquivalent zu:
var a; console.log(a); a = 1;
Ausführung
Der Ausführungsprozess wird angezeigt entsprechend der nacheinander ausgeführten Anweisung. Während der Ausführung werden Variablen zugewiesen, Funktionen aufgerufen und können durch Codeblöcke oder Funktionen begrenzt werden.
Zusammenfassung
Der Kompilierungsprozess von Javascript umfasst die Analysephase und die Ausführungsphase. Die Analysephase umfasst die lexikalische Analyse und die Syntaxanalyse, und die Ausführungsphase umfasst die Vorkompilierung und Ausführung. Vor der Ausführungsphase verarbeitet die Javascript-Engine den Bereich vor, führt das Heben von Funktionsdeklarationen und Variablen durch und führt dann den Code in der Reihenfolge aus, in der die Anweisungen erscheinen.
Das obige ist der detaillierte Inhalt vonJavascript-Kompilierungsprozess. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



In dem Artikel wird die Verwendung von UseEffect in React, einen Haken für die Verwaltung von Nebenwirkungen wie Datenabrufen und DOM -Manipulation in funktionellen Komponenten erläutert. Es erklärt die Verwendung, gemeinsame Nebenwirkungen und Reinigung, um Probleme wie Speicherlecks zu verhindern.

Der Artikel erläutert den Usecontext in React, was das staatliche Management durch Vermeidung von Prop -Bohrungen vereinfacht. Es wird von Vorteilen wie zentraler Staat und Leistungsverbesserungen durch reduzierte Neulehre erörtert.

In Artikel werden die Verbindungskomponenten an Redux Store mit Connect () verbinden, wobei MapStatetoprops, MapDispatchtoprops und Leistungsauswirkungen erläutert werden.

In Artikeln werden das Standardverhalten bei Ereignishandlern mithilfe von PURDDEFAULT () -Methoden, seinen Vorteilen wie verbesserten Benutzererfahrungen und potenziellen Problemen wie Barrierefreiheitsproblemen verhindern.

Der Artikel erörtert die Vor- und Nachteile kontrollierter und unkontrollierter Komponenten bei React, wobei sich auf Aspekte wie Vorhersehbarkeit, Leistung und Anwendungsfälle konzentriert. Es rät zu Faktoren, die bei der Auswahl zwischen ihnen berücksichtigt werden müssen.

React kombiniert JSX und HTML, um die Benutzererfahrung zu verbessern. 1) JSX bettet HTML ein, um die Entwicklung intuitiver zu gestalten. 2) Der virtuelle DOM -Mechanismus optimiert die Leistung und reduziert den DOM -Betrieb. 3) Komponentenbasierte Verwaltungs-Benutzeroberfläche zur Verbesserung der Wartbarkeit. 4) Staatsmanagement und Ereignisverarbeitung verbessern die Interaktivität.

Das Reaktivitätssystem von VUE 2 kämpft mit der Einstellung der Direktarray -Index, der Längenänderung und der Addition/Löschung der Objekteigenschaften. Entwickler können die Mutationsmethoden von VUE und VUE.SET () verwenden, um die Reaktivität sicherzustellen.

In dem Artikel wird das Definieren von Routen im React -Router unter Verwendung der & lt; Route & gt; Komponente, Abdeckung von Requisiten wie Pfad, Komponente, Rendern, Kindern, exakt und verschachteltes Routing.
