Javascript编译语言?

Javascript编译语言?,javascript,Javascript,我是网络开发新手,正在学习JavaScript 来自斯坦福大学的一位教授: JavaScript是一种解释语言,而不是编译语言。在运行之前需要编译一个程序,如C++或java。源代码通过一个称为编译器的程序传递,编译器将其翻译成机器能够理解并执行的字节码。相反,JavaScript没有编译步骤。相反,浏览器中的解释器读取JavaScript代码,解释每一行并运行它。更现代的浏览器使用一种称为即时(JIT)编译的技术,它将JavaScript编译为即将运行的可执行字节码 从开始: 。。。但是,尽管

我是网络开发新手,正在学习JavaScript

来自斯坦福大学的一位教授:

JavaScript是一种解释语言,而不是编译语言。在运行之前需要编译一个程序,如C++或java。源代码通过一个称为编译器的程序传递,编译器将其翻译成机器能够理解并执行的字节码。相反,JavaScript没有编译步骤。相反,浏览器中的解释器读取JavaScript代码,解释每一行并运行它。更现代的浏览器使用一种称为即时(JIT)编译的技术,它将JavaScript编译为即将运行的可执行字节码

开始:

。。。但是,尽管JavaScript属于“动态”或“解释”语言的一般类别,它实际上是一种编译语言

为了简单起见,让我们假设JavaScript的任何片段都必须在执行之前(通常就在执行之前!)进行编译。因此,JS编译器将采用程序var a=2;首先编译它,然后准备好执行它,通常是马上

从Stack Overflow的一些问题来看,有这样一些想法:它取决于语言的实际实现


你有什么想法吗?

嗯,你可能会了解语义和术语的差异,但有两点很重要:

  • Javascript(在网页中)以其源代码形式(或至少以最小化的文本形式)分发,而不是作为提前编译的二进制文件

  • Javascript即使在浏览器中也不会编译成可执行的机器代码(尽管现在它的某些部分可能是性能优化),而是通过虚拟机执行的


Chrome浏览器使用V8引擎编译Javascript,就像其他浏览器可能使用Rhino或SpiderMonkey一样

V8是谷歌编写的JavaScript引擎,用C++编写。它用于在客户端(GoogleChrome)和服务器端(node.JS)应用程序中编译JS。为了提高速度,V8将JavaScript代码转换为更高效的机器代码,而不是使用解释器

V8通过实现JIT(实时)编译器,在脚本执行时将JavaScript代码编译成机器代码,就像许多现代JavaScript引擎(如SpiderMonkey或Rhino(Mozilla))所做的那样。V8的主要区别在于它不产生字节码或任何中间代码。它只是在运行中编译JavaScript


希望这有帮助

@Thilo,我已经读过了。但是这本书和课程的定义呢?你能把这两个定义粘贴在这里吗?是的,我已经在我的问题中引用了这些定义,但是如果你需要,我会用完整的版本来编辑!你有那本书中的下一句话吗,他们实际上解释了关于“编译语言”的断言?Chrome(V8)、Safari(SquirreFish)和IE9+都有JIT编译器,可以像Java一样将字节码编译成本机代码。事实上,较新的Safari使用llvm作为javascript“解释器”——llvm是一个C/C++/C#/Pascal/Fortran/etc.编译器。