JS运行原理?

JS运行原理?
1.JS Engine(JS引擎)

简单来说,JS引擎主要是对JS代码进行词法、语法等分析,通过编译器将代码编译成可执行的机器码让计算机去执行。(JS引擎与JAVA的虚拟机非常相似, 首先说一下为什么要做成虚拟机,因为机器不同,如果没有虚拟机我们就相当于需要针对每一种机器都要进行代码编译,这样肯定是不合理的。所以为了解决这样的问题,Java引入虚拟机(VM)的概念,让编译后的代码直接跑在一台虚拟的机器上,无论最终的目标平台是什么,都在上面构建出一个虚拟的一致的虚拟机出来,就可以达到一次编译到处执行的效果了。 )

目前最流行的JS引擎非V8莫属了,Chrome浏览器和Node.js采用的引擎就是V8引擎。

简单来说它的唯一的目的就是读取和编译JavaScript代码,也就是说可以分析、解释、优化、垃圾回收javascript代码。

执行过程:

JavaScript引擎会加载源代码,把它分解成字符串(又叫做分词),再把这些字符串转换成编译器可以理解的字节码,然后执行这些字节码。

Google的V8引擎是用C++ 编写的,它也能够编译并执行JavaScript源代码、处理内存分配和垃圾回收。它被设计成由两个编译器组成,可以把源码直接编译成机器码,具体的执行过程可以看成以下几步:

  1. 它进行词法分析,就是将源代码分解成一系列具有明确含义的符号或字符串。
  2. 然后用语法分析器分析这些符号,将其构建成语法树。
  3. 接着四个 JIT(Just-In-Time)进程开始参与进来,分析和执行解析器所生成的字节码。

 

2.与ECAMScript的关系?

简单的说,ECMAScript定义了语言的标准,JavaScript引擎根据它来实现,这就是两者的关系。

3.RunTime

运行时可以简单理解为当前的运行环境,不同的环境提供了不同的api调用,如web浏览器中的window对象,DOM相关API等,这些接口可以提供相关的JS调用,

 

posted @ 2021-11-08 15:44  lilizifeng  阅读(439)  评论(0)    收藏  举报