Heim >Web-Frontend >js-Tutorial >Machen Sie sich mit der Funktionsweise von JavaScript vertraut

Machen Sie sich mit der Funktionsweise von JavaScript vertraut

WBOY
WBOYnach vorne
2022-08-31 17:40:311832Durchsuche

Dieser Artikel vermittelt Ihnen relevantes Wissen über Javascript. Dieser Artikel stellt Ihnen die Funktionsweise von JavaScript ausführlich vor. Es hat einen gewissen Referenzwert für alle, die es benötigen Es.

Machen Sie sich mit der Funktionsweise von JavaScript vertraut

[Verwandte Empfehlungen: Javascript-Video-Tutorial, Web-Frontend]

Um zu verstehen, wie JavaScript ausgeführt wird und welche Funktionsweise es hat, müssen wir zunächst den Kern des Browsers verstehen:

Browser-Kernel

Jeder, der sich damit auskennt, weiß: Verschiedene Browser bestehen aus unterschiedlichen Kerneln, also welche Kernel es gibt und welche Kernel von unseren häufig verwendeten Browsern verwendet werden:

  • Gecko: Früher von Netscape- und Mozilla Firefox-Browsern durchsucht
  • Trident: entwickelt von Microsoft, wird von IE4~IE11-Browsern verwendet, aber Edge-Browser wurde auf Blink umgestellt
  • Webkit: entwickelt von Apple basierend auf KHTML, Open Source, wurde zuvor auch in Safari verwendet;
  • Blink : Es ist ein Zweig von Webkit, der von Google entwickelt wurde und derzeit in Google Chrome, Edge, Opera usw. verwendet wird.

Der sogenannte Browser-Kernel bezieht sich auf die Layout-Engine des Browsers, also die Browser-Engine. Der Arbeitsausführungsprozess der Engine ist wie folgt:

Machen Sie sich mit der Funktionsweise von JavaScript vertraut

Aber während dieses Ausführungsprozesses werden beim HTML-Parsen JavaScript-Tags angetroffen.
Hört auf, HTML zu analysieren und JavaScript-Code zu laden und auszuführen.

Natürlich, warum nicht einfach JavaScript-Code asynchron laden und ausführen, anstatt hier aufzuhören?

Der Browser hofft also, das von HTML analysierte DOM und das DOM nach der JavaScript-Operation zusammenzufügen, um den endgültigen DOM-Baum zu generieren, anstatt häufig neue DOM-Bäume zu generieren.

Wer führt also den JavaScript-Code aus?
Antwort: JavaScript-Engine

JavaScript-Engine

Warum brauchen wir eine JavaScript-Engine?

  • Unabhängig davon, ob das von uns geschriebene JavaScript zur Ausführung an den Browser oder Knoten übergeben wird, muss es letztendlich von der CPU ausgeführt werden.
  • Aber die CPU kennt nur ihren eigenen Befehlssatz, bei dem es sich tatsächlich um Maschinensprache handelt , um von der CPU ausgeführt zu werden;
  • Wir benötigen also eine JavaScript-Engine, die uns dabei hilft, JavaScript-Code zur Ausführung in CPU-Anweisungen zu übersetzen;

Was sind die gängigen JavaScript-Engines?

  • SpiderMonkey: die erste JavaScript-Engine, entwickelt von Brendan Eich (auch der Autor von JavaScript);
  • Chakra: entwickelt von Microsoft, verwendet im IE-Browser;
  • JavaScriptCore: JavaScript-Engine in WebKit, entwickelt von Apple; V8: Die von Google entwickelte leistungsstarke JavaScript-Engine hilft Chrome auch dabei, sich von vielen Browsern abzuheben. (V8 ist eine leistungsstarke JavaScript-Engine) , das unter anderem in Chrome und Node.js verwendet wird.
  • Es implementiert ECMAScript und WebAssembly und läuft auf Windows 7 oder höher, macOS 10.12+ und Linux-Systemen mit x64-, IA-32-, ARM- oder MIPS-Prozessoren.
V8 kann eigenständig ausgeführt oder in jede C++-Anwendung eingebettet werden.

    Das Prinzip der V8-Engine, die JavaScript-Code ausführt:
  • Das Parse-Modul konvertiert JavaScript-Code in AST (Abstract Syntax Tree). Dies liegt daran, dass der Interpreter den JavaScript-Code nicht direkt versteht.
  • Wenn die Funktion nicht aufgerufen wird , Dann wird es nicht in AST konvertiert;
Offizielle Dokumentation von Parse zu V8: https://v8.dev/blog/scanner

Ignition ist ein Interpreter, der AST in ByteCode (Bytecode) konvertiert

  • Gleichzeitig Gleichzeitig werden die für die TurboFan-Optimierung erforderlichen Informationen gesammelt (z. B. die Typinformationen von Funktionsparametern, nur mit dem Typ können echte Operationen ausgeführt werden).
  • Wenn die Funktion nur einmal aufgerufen wird, interpretiert und führt Ignition ByteCode aus;
  • V8-Beamter der Ignition-Dokumentation: https://v8.dev/blog/ignition-interpreter

TurboFan ist ein Compiler, der Bytecode in Maschinencode kompilieren kann, den die CPU direkt ausführen kann
  • Wenn eine Funktion mehrfach aufgerufen wird Mal, Dann wird es als Hot-Funktion markiert und dann über TurboFan in optimierten Maschinencode umgewandelt, um die Ausführungsleistung des Codes zu verbessern
  • Der Maschinencode wird jedoch tatsächlich in ByteCode wiederhergestellt, denn wenn die Die Funktion wird anschließend ausgeführt. Während des Prozesses hat sich der Typ geändert (z. B. wurde die Summenfunktion ursprünglich als Zahlentyp ausgeführt, später jedoch als Zeichenfolgentyp. Der zuvor optimierte Maschinencode kann die Operation nicht korrekt verarbeiten und wird in umgewandelt). Bytecode in umgekehrter Reihenfolge;
  • Offizielle Dokumentation von TurboFan V8: https://v8.dev/blog/turbofan-jit

Das Obige ist der Ausführungsprozess des JavaScript-Codes

Das obige ist der detaillierte Inhalt vonMachen Sie sich mit der Funktionsweise von JavaScript vertraut. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:jb51.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen