Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript是否编译为二进制?_Javascript_V8_Interpreter_Rhino - Fatal编程技术网

JavaScript是否编译为二进制?

JavaScript是否编译为二进制?,javascript,v8,interpreter,rhino,Javascript,V8,Interpreter,Rhino,JavaScript是否在web浏览器上运行 比如Java在JVM上运行 或者它实际上是编译成二进制代码并在机器上运行的吗?它必须这样做——没有适合处理器的机器代码,任何东西都不能在计算机上运行 V8将JavaScript转换为自己的字节码,然后进行大量优化并转换为机器码 甚至JVM也做了类似的事情。JVM将Java字节码转换为机器码。Javascript不是真正编译的——它是在浏览器上解释的,因此它在客户端有效地“在浏览器上运行” 编辑:我应该从它的基本水平开始。正如在评论中提到的,现在有了更

JavaScript是否在web浏览器上运行

比如Java在JVM上运行

或者它实际上是编译成二进制代码并在机器上运行的吗?

它必须这样做——没有适合处理器的机器代码,任何东西都不能在计算机上运行

V8将JavaScript转换为自己的字节码,然后进行大量优化并转换为机器码


甚至JVM也做了类似的事情。JVM将Java字节码转换为机器码。

Javascript不是真正编译的——它是在浏览器上解释的,因此它在客户端有效地“在浏览器上运行”

编辑:我应该从它的基本水平开始。正如在评论中提到的,现在有了更复杂的引擎。

V8(在谷歌浏览器中)包含一个JS解释器和一个JIT(即时)编译器。JS代码被转换为特定于V8的字节码。字节码最初由解释器解释,称为“点火”。当函数变为“热”时(经常运行),TurboFan JIT编译器将根据字节码生成优化的机器代码


其他现代JS引擎使用类似的策略。因此,JS可以被解释或编译为机器代码(使用JIT编译器),这与JVM的工作方式类似,是的。

JavaScript引擎早已从单纯解释语言转向了即时编译,它们可以在即时编译过程中对代码进行大量优化,直至生成本机代码。JS是一个很好的例子。是的,最终指令会以某种机器代码的形式发送,但JS本身不会产生这种代码。@vlaz它的规范是一种解释语言——这并不意味着引擎必须这样对待它way@vlaz我从来没有说过别的。