JavaScript用什么语言编写?


68

如果它是一种脚本语言,顾名思义,它必须以较低级别的语言编写,对吗?就像PHP是用C编写的一样,JavaScript是用什么语言编写的?


8
“它必须用一种较低的语言编写”,不一定,例如,Narcissus是一个Java解释器,使用纯Javascript(它是一个元循环评估器
编写

我猜想有许多用各种不同语言编写的不同JavaScript引擎。
Galik

@CMS是的,但是这里的基本问题是,第一个JS解释器是用哪种语言编写的?如果没有工具可以读取JavaScript代码(在这种情况下为Interpreter),则无法使用JavaScript编写JavaScript解释器。这里的链接解释了这个鸡蛋问题:stackoverflow.com/questions/18247888/…–
RegarBoy

Answers:


114

JavaScript只是一个标准,更正式地称为ECMAScript。就像任何标准一样,它可以用任何语言实现。

Chrome的Javascript引擎V8用C ++编写。

从项目页面:

V8用C ++编写,并在Google Chrome(谷歌的开源浏览器)中使用。

V8实现了ECMA-262,第5版中指定的ECMAScript,并在Windows(XP或更高版本),Mac OS X(10.5或更高版本)和使用IA-32,x64或ARM处理器的Linux系统上运行。

Firefox的Javascript引擎SpiderMonkey(以及现在的TraceMonkey)也是用C ++编写的。正如下面的专家所说,Rhino是用Java编写的。


8
确实。尽管我敢打赌,它们大多数是用C ++(或C及其衍生物)实现的。Rhino显然是Java。
maerics 2011年



10

大多数Java解释器都是用C / C ++(V8,Nitro等)编写的,但是兼容的解释器可以用任何语言(Rhino→Java,Interpreter →Javascript等)编写。


7

Javascript是ECMAScript标准的实现,但是没有像PHP那样的单一规范解释器。

出于性能方面的考虑,大多数主要的实现(独立的或作为Web浏览器的一部分)通常主要是用C或C ++编写的,但不一定总是这样。由Mozilla维护的Rhino引擎是用Java编写的。


5
可能是PHP的多种实现,但是......没有一个人的兴趣。
伊格纳西奥·巴斯克斯

@Ignacio Shocking,不是吗?;)
dfreeman 2011年

5
@ IgnacioVazquez-Abrams-原来Facebook感兴趣:)
Jon Hudson


2

Javascript的大多数实现都显示出明显是由于使用了指针和传递了byref参数所导致的行为,这些行为通常指向C或C ++的使用。

例如,当您在中间数组的帮助下将多维数组分解成一个循环时,这显然很明显。如果您不熟悉指针和参数的byref传递,则它们的行为通常非常“奇怪”(您每次都需要执行var hlp = new Array(),否则它将覆盖您已经存储在其他位置的先前值)

我对如何在Java中实现javascript感到非常好奇,因为我想这种情况下的这种行为会大不相同?


否。JavaScript执行的语义不依赖于用于实现它们的语言。
Bergi

-4

C++是任何现代和幻想的基本语言。大多数现代高级语言是低级语言的子集C++。您今天看到的所有现代语言都是某种形式的子集C++。甚至Java是的子集C++


错了 Java不是C ++的子集。C ++不被视为低级语言。您可能会想到C,即使那样,Java和其他语言也不是C的“子集”。它们可能基于C,但它们不是子集。可接受的答案给出了一个更好的答案,那就是Javascript可以用任何语言编写,但是最受欢迎的实现是C ++,即Google的V8。
David Frick

我不明白你的意思。C ++是起源于C的另一种语言。如果任何语言是C ++的子集,则此python代码应在C ++中起作用print("hello world")。将其粘贴到新文件中,然后使用C ++编译器进行编译。它可以编译吗?如果不是,那么Python并不是c ++的子集
ARI FISHER
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.