We know that the so-called JavaScript engine is a virtual machine that specializes in processing JavaScript scripts. It is usually included in a web browser and is used to parse and execute JavaScript scripts. So today let’s analyze in detail what the JS engine looks like when running.
The JavaScript virtual machine is a process virtual machine. One of its characteristics is that it has a virtual instruction set (ISA).
The most popular JavaScript engine is of course Google’s V8 engine. The V8 engine is used in Chrome and Node, but unlike other JavaScript engines, V8 only uses a JIT compiler and does not use Interpreter to execute JavaScript implementations. There is a simple diagram below to illustrate their relationship:
This engine is mainly composed of two groups:
Memory heap: This is where memory allocation occurs. Call Stack: This is where your code is executed
Runtime
Some browser APIs are often used (for example: setTimeout), but these APIs are not provided by the engine. . So, where did they come from? In fact, the actual situation here is a bit complicated.
In the above figure, when the main thread is running, a heap and a stack are generated. The code in the stack calls various external APIs, which are in the "Task Queue " Add various events (click, load, done). As long as the code in the stack is executed, the main thread will read the "task queue" and execute the callback functions corresponding to those events in sequence.
The code in the execution stack (synchronous task) is always executed before reading the "task queue" (asynchronous task).
In addition to placing events for asynchronous tasks, the "task queue" can also place timed events, that is, specifying how long certain code will be executed after.
So we have many APIs outside of the engine, which we call the Web API provided by the browser, such as DOM, AJAX, setTimeout, etc.
In summary, visually speaking, the JavaScript engine is a machine that can work, and the JavaScript virtual machine is the execution core of this machine, and the JavaScript runtime is the machine.
# I believe you have mastered the methods after reading these cases. For more exciting information, please pay attention to other related articles on the php Chinese website!
Related reading:
Summary of the front-end js framework and explanation of its uses
How to use the jssplice() method in JS development
Implementation steps of DOM programming in html5
The above is the detailed content of What does the JS engine look like when it is running?. For more information, please follow other related articles on the PHP Chinese website!