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

Lösung für das Problem, dass Centos8 Docker nicht installieren kann

Problem [root@zh ~]# [root@zh ~]# [root@zh ~]# yu...

Automatisiertes Frontend-Deployment basierend auf Docker, Nginx und Jenkins

Inhaltsverzeichnis Vorbereitende Vorbereitung Ber...

Reacts Übergang von Klassen zu Hooks

Inhaltsverzeichnis ReagierenHooks Vorwort WarumHo...

RHCE installiert Apache und greift mit einem Browser auf IP zu

1. at ist so konfiguriert, dass nach 5 Stunden „D...

Verwenden von Schleifen in awk

Lernen wir verschiedene Arten von Schleifen kenne...

Installationsschritte der Ubuntu 20.04-Doppelpinyin-Eingabemethode

1. Chinesische Eingabemethode einrichten 2. Stell...

mysql 5.7.11 winx64 anfängliche Passwortänderung

Laden Sie die komprimierte Version von MySQL-5.7....

Zusammenfassung der Möglichkeiten zur Implementierung von Single Sign-On in Vue

Das Projekt wurde vor Kurzem ausgesetzt und die U...