Werfen wir einen Blick auf die Vorkompilierung von JavaScript (Zusammenfassung)

Werfen wir einen Blick auf die Vorkompilierung von JavaScript (Zusammenfassung)

JS-Lauftrilogie

js-Ausführungscode ist in drei Schritte unterteilt

  • Syntaxanalyse
  • Vorkompilierung
  • Interpretation

Wenn JavaScript-Code ausgeführt wird, führt er zunächst eine Syntaxanalyse durch, um zu prüfen, ob der Code Fehler auf niedriger Ebene enthält. Anschließend führt er eine Vorkompilierung durch, organisiert die interne Logik und beginnt schließlich mit der zeilenweisen Ausführung des Codes.

Syntaxanalyse

Vor der Ausführung des Codes durchsucht das System den gesamten Code, um zu prüfen, ob Syntaxfehler auf niedriger Ebene vorliegen, z. B. eine fehlende geschweifte Klammer.

Vorkompilierung

Vorkompilierung Auftakt

Die Vorkompilierung erfolgt unmittelbar vor der Ausführung einer Funktion. Der Variablen wird ein Wert zugewiesen, ohne dass sie deklariert wird, und die Variable gehört dem globalen Objekt

a = 3

var b = c = 4

Alle deklarierten globalen Variablen sind Fenstereigenschaften

var a = 1 ===> window.a = 1

Vier Schritte der Vorkompilierung

  1. Erstellen Sie ein AO-Objekt (Activation Object) (das lokale Variablen innerhalb der Funktion speichert)
  2. Suchen Sie die Parameter- und Variablendeklarationen und verwenden Sie die Variablen- und Parameternamen als AO-Attributnamen mit undefinierten Werten
  3. Vereinheitlichung von tatsächlichen und formalen Parametern
  4. Suchen Sie im Funktionskörper nach der Funktionsdeklaration und weisen Sie dem Funktionskörper den Wert zu

Ich erkläre dies anhand eines Beispiels. Sie können auch selbst eine Antwort geben, bevor Sie fortfahren.

Funktion fn(a) {
 konsole.log(a);
 var a = 123;
 konsole.log(a);
 Funktion a() {}
 konsole.log(a);
 var b = Funktion() {};
 console.log(b);
 Funktion d() {}
 konsole.log(d)
}
fn(1);

Der erste Schritt besteht darin, ein AO-Objekt (Activation Object) zu erstellen. Der zweite Schritt besteht darin, die formalen Parameter und Variablendeklarationen zu finden und die Variablen- und formalen Parameternamen als AO-Attributnamen mit undefinierten Werten zu verwenden.

{
 a: undefiniert,
 b: undefiniert,
}

Der dritte Schritt besteht darin, die tatsächlichen Parameter und formalen Parameter zu vereinheitlichen

{
 ein: 1,
 b: undefiniert,
}

Schritt 4: Suchen Sie die Funktionsdeklaration und weisen Sie dem Funktionskörper den Wert zu

{
 a: Funktion a() {},
 b: undefiniert,
 d: Funktion d() {}
}

Kurz bevor die Funktion fn ausgeführt wird, sind die Werte von a, b und d wie oben gezeigt

Das Ergebnis der Ausführung von fn(1) ist also

// ƒ a() {}
// 123
// 123
// ƒ () {}
// ƒ d() {}

Im globalen Bereich ist der Vorkompilierungsprozess etwas anders

  • Erstellen Sie ein GO-Objekt (Global Object) (das globale Variablen innerhalb der Funktion speichert) GO === Fenster
  • Suchen Sie die Parameter- und Variablendeklarationen und verwenden Sie die Variablen- und Parameternamen als GO-Attributnamen mit undefinierten Werten
  • Suchen Sie im Funktionskörper nach der Funktionsdeklaration und weisen Sie dem Funktionskörper den Wert zu

Interpretation

Code zeilenweise ausführen

Übungsfragen

Hier sind ein paar Beispiele, bei Interesse könnt ihr gerne mal reinschauen

Funktion test(a, b) {
 konsole.log(a);
 console.log(b);
 var b = 234;
 console.log(b);
 ein = 123;
 konsole.log(a);
 Funktion a() {}
 var a;
 b = 234;
 var b = Funktion() {};
 konsole.log(a);
 console.log(b);
}
Prüfung(1);
global = 100;
Funktion fn() {
 konsole.log(global);
 global = 200;
 konsole.log(global);
 var global = 300;
}
fn();
var global;

Funktion test() {
 console.log(b);
 wenn (a) {
  var b = 100;
 }
 c = 234;
 console.log(c);
}
var a;
prüfen();
ein = 10;
console.log(c);

Zusammenfassen

In den meisten Fällen verwenden wir die folgende Methode, um den Vorkompilierungsprozess durchzuführen:

  • Funktionsdeklaration, allgemeine Verbesserung
  • Variablendeklaration, Deklarationserhöhung

Wenn Sie auf eine komplexe Situation stoßen, können Sie das Problem nur auf die primitivste Art und Weise lösen.

Dies ist das Ende dieses Artikels zum Verständnis der JavaScript-Vorkompilierung (Zusammenfassung). Weitere relevante Inhalte zur JavaScript-Vorkompilierung finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Eine kurze Analyse der JavaScript-Vorkompilierung und impliziter globaler Variablen
  • Beispiel zur Erläuterung des JavaScript-Vorkompilierungsprozesses
  • Detaillierte Erklärung des Vorkompilierungsprinzips von JavaScript
  • Die "Vorkompilierungsphase" und "Ausführungsphase" des JavaScript-Laufprozesses
  • Eliminieren Sie Leistungsengpässe durch Vorkompilieren von JSP

<<:  So exportieren Sie eine CSV-Datei mit Header in MySQL

>>:  Lösung für das Problem, dass die Umleitung der Crontab-Ausgabe unter Linux nicht wirksam wird

Artikel empfehlen

Detaillierte Beschreibung des Anwendungsszenarios für Javascript-Closure

Inhaltsverzeichnis 1. Abschluss 2. Szenarien für ...

Eine kurze Diskussion über die MySQL-Optimierungslösung für große Tabellen

Hintergrund Die Menge neuer Daten in der Geschäft...

Drei Netzwerkmethoden und Prinzipien von virtuellen VMware-Maschinen (Zusammenfassung)

1. Brigde——Bridge: VMnet0 wird standardmäßig verw...

Verwenden Sie js, um ein einfaches Schlangenspiel zu schreiben

In diesem Artikel wird der spezifische Code eines...

Tutorial zur Installation der Dekomprimierungsversion von MySQL 8.0.12

In diesem Artikel finden Sie das Installations-Tu...

Detailliertes Beispiel für MySQL-Datenspeicherprozessparameter

Es gibt drei Typen von MySQL-gespeicherten Prozed...

HTML-Tabellen-Markup-Tutorial (14): Tabellenkopf

<br />In der HTML-Sprache können Sie der Tab...

Installieren Sie Apache2.4+PHP7.0+MySQL5.7.16 auf macOS Sierra

Obwohl Mac-Systeme mit PHP und Apache ausgeliefer...

Detaillierte Erklärung langer Transaktionsbeispiele in MySQL

Vorwort: Die Artikelserie „Erste Schritte mit MyS...

Eine kurze Diskussion über die Typen von node.js-Middleware

Inhaltsverzeichnis Überblick 1. Middleware auf An...