Javascript 是解释型语言还是编译型语言
Javascript是解释型语言。在这里,我们将尝试解决与Javascript相关的长期混淆问题。学习Javascript时最大的问题之一是它是编译型的还是解释型的,还是使用JIT(即时编译)编译器。为了理解这个概念,我们应该清楚解释器、编译器和JIT编译器的定义。
- 解释器 :解释器直接执行以编程或脚本语言编写的指令,而无需事先将它们转换为目标代码或机器代码。
- 编译器 :编译器接受整个程序并将其转换为通常存储在文件中的目标代码。目标代码也称为二进制代码,可以在链接后直接由机器执行。
- JIT编译器: JIT编译器首先将整个代码转换为字节码,然后在运行时使用编译器将代码转换为机器可读的代码。JIT编译器有助于更快的执行。
Javascript代码的执行过程是如何的?
Javascript代码在执行之前进行解析,因此看起来像是一种解析语言,但是代码在执行之前会被转换为二进制形式。为了进一步理解这个概念,让我们看看代码在幕后是如何执行的。
- 首先,使用babel或任何其他web打包工具对代码进行转译。
- 将这种形式的代码给予引擎,引擎将其转换为抽象语法树(AST)。
- 然后将AST转换为机器可以理解的字节码。这是一种中间表示(IR),由JIT编译器进一步优化。
- 优化后,JS虚拟机执行代码。
因此,我们可以总结Javascript的代码执行分为三个阶段。
因此,我们可以得出结论:在任何执行开始之前,JavaScript代码都会被解释执行。
示例: 为了证明这个说法,我们将看下面的代码示例。
Javascript
输出: 在上面的代码示例中,我们可以看到解释器的行为,此处首先在控制台打印出“Hello”,然后报告了一个错误。这个输出强烈支持JavaScript是一种解释型语言的事实。
一般情况下,由于解析阶段,JavaScript代码看起来像是逐行执行的,但整个代码在执行之前会一次性编译成可读取的机器代码。这表明JavaScript是一种即时编译的语言,在其第一阶段中使用解释器。