0

是的,这是一个初学者的问题:我看到 javascript 在浏览器中运行。那么,每个浏览器都是一种在其上运行 javascript 代码的虚拟机(就像在 java 中一样)?我不能以任何形式“编译”javascript?

4

3 回答 3

3

是的,你不能提前将 Javascript “编译”成其他任何东西。浏览器会为您编译它,然后运行它。一些浏览器拥有比其他浏览器更复杂的 Javascript 编译器。

于 2012-05-07T03:18:58.123 回答
2

每个浏览器窗口甚至该窗口中的每个浏览器框架都是它自己的 HTML/javascript 执行引擎(类似于虚拟机)。

它们并不是完全独立的,因为(受一些安全限制),它们可以相互通信并相互了解,但它们都有自己的执行状态、自己的全局变量、自己的代码、自己的事件处理程序, ETC...

Javascript 代码的编译与编译 C/C++ 代码的意义不同。浏览器只接受文本形式的 javascript。然后浏览器解释该文本。不同的浏览器有不同的方式来解释 javascript 文本以便尽快执行。它不像 C/C++ 代码那样直接编译成纯机器语言,而是编译(或更改)成解释器可以比纯文本更快地执行的东西。

于 2012-05-07T03:24:23.460 回答
2

实际上,浏览器内部运行着一个JavaScript 引擎。该引擎读取并执行 JavaScript 代码。所以,它是一个解释器(根本没有编译)

于 2012-05-07T03:26:41.883 回答