Ich versuche zu verstehen, wie JavaScript in einer Webbrowser-Umgebung ausgeführt wird.
In Bezug auf Node.js verstehe ich, dass der in einem Node.JS-Programm geschriebene JavaScript-Code mit C ++ - Code (V8) kompiliert wird und schließlich zum Maschinencode wird. Da Node.js mit dem Dateisystem und anderen Aufgaben auf Maschinenebene interagieren kann, macht es für mich Sinn, warum es irgendwann zu Maschinencode wird.
Ich fühle mich anders in der Webbrowser-Umgebung. Nach meinem Verständnis besteht das Hauptziel darin, mit dem DOM zu interagieren. Muss JavaScript in Maschinencode kompiliert werden, um nur mit dem DOM zu interagieren?
Ich bin darüber verwirrt. Node.js und Chrome laufen beide auf V8. V8 ist in C ++ geschrieben und kompiliert nach meinem Wissen JavaScript-Code in Maschinencode, den ein Prozessor verstehen kann.
Sie benötigen eine JavaScript-Engine, um ECMA-262 zu implementieren, das ist der ganze Zweck einer Engine (glaube ich?). Aber muss ein Webbrowser JavaScript auf einer Maschinensprachebene kompilieren, welche Maschinenoperationen führt er aus?
Hier sind ein paar Artikel, die ich recherchiert habe, leider habe ich keine Antwort auf meine Frage in ihnen gefunden:
Die Engine wird in C ++ geschrieben, dann wird dieser Code von einem Compiler in Maschinencode übersetzt. Sobald der Code in der Maschinensprache vorliegt, kann er vom Computer ausgeführt werden. Während die Engine läuft, kann sie in JavaScript geschriebenen Code lesen, interpretieren und ausführen, wozu der Code sie auffordert. In diesem Fall läuft der Computercode, der gerade läuft, was ein anderer Code ihm vorschreibt. Der Unterschied zwischen Knoten und einem Browser besteht darin, dass der Browser nichts tut, was ein JavaScript von ihm verlangt. Eine andere Sache, die man beachten sollte ist, dass einige Browser und Knoten JavaScript-Code in Echtzeit in Maschinencode umwandeln, um schneller zu werden. Browser achten auch darauf, keinen Maschinencode zu schreiben, der gefährlich ist, aber theoretisch könnte das passieren.
Tags und Links javascript