在Web浏览器环境中执行时,JavaScript是否编译为机器代码?

在Web浏览器环境中执行时,JavaScript是否编译为机器代码?,javascript,Javascript,我试图更好地理解JavaScript在web浏览器环境中是如何执行的 在Node.js方面,我了解到,在NoDE.js程序中编写的JavaScript代码是用C++代码编译的,最终成为机器代码。由于Node.js可以与文件系统和其他机器级任务交互,所以对我来说,它最终必须成为机器代码是有道理的 我对web浏览器环境的感觉不同。据我所知,主要目标是与DOM交互。JavaScript是否需要编译成机器代码才能和DOM交互 我对此感到困惑。Node.js和Chrome都在V8上运行。V8是用C++编写

我试图更好地理解JavaScript在web浏览器环境中是如何执行的

在Node.js方面,我了解到,在NoDE.js程序中编写的JavaScript代码是用C++代码编译的,最终成为机器代码。由于Node.js可以与文件系统和其他机器级任务交互,所以对我来说,它最终必须成为机器代码是有道理的

我对web浏览器环境的感觉不同。据我所知,主要目标是与DOM交互。JavaScript是否需要编译成机器代码才能和DOM交互

我对此感到困惑。Node.js和Chrome都在V8上运行。V8是用C++编写的,根据我的知识,将JavaScript代码编译成处理器可以理解的机器代码。 您需要一个JavaScript引擎来实现ECMA-262,这就是引擎的全部用途(我想是吧?)。但是,web浏览器是否需要将JavaScript编译到机器语言级别,它执行的是什么机器操作

以下是我研究过的几篇文章,不幸的是,我在其中没有找到我的问题的答案:


  • >P>引擎是用C++编写的,然后通过编译程序将该代码翻译成机器代码。一旦代码是机器语言,它就可以由计算机运行。当引擎运行时,它可以读取用JavaScript编写的代码,对其进行解释,并执行代码要求它执行的操作。在这种情况下,计算机中实际运行的是引擎代码,它恰好执行另一个代码告诉它执行的操作。节点和浏览器之间的区别在于浏览器不会执行JavaScript要求它执行的任何操作。另一件需要记住的事情是,一些浏览器和节点实时地将JavaScript代码转换为机器代码以获得更高的速度。浏览器也注意不要编写危险的机器代码,但理论上可能会发生这种情况。

    我对你的问题没有完整的答案,但这至少取决于浏览器以及它使用的js引擎。大多数大型企业都有自己独特的引擎,或者至少有自己的现有引擎,谁知道呢?也许是,也许不是。现代JavaScript运行时确实可以将小块代码编译成本机二进制形式。你的程序真的没有办法告诉你。为什么这很重要?是的,正如Jaromanda X所说,您完全错误地理解了节点的工作方式。问题中的第二个链接包含以下内容:它通过实现JIT(即时)编译器,在执行时将JavaScript代码编译成机器代码。。。V8的主要区别在于它不产生字节码或任何中间代码。@LenilsondeCastro nitro、spidermonkey、chakra和V8都有。