JavaScript解释器/引擎是如何工作的?

6
我很感兴趣了解JavaScript解释器(引擎)的工作原理。我知道JavaScript没有编译过程。我查看了ECMA规范,但它并没有解释实际引擎的工作原理。
我提出这个问题的主要原因是因为我想了解为什么IE7与IE8或Firefox 3.5+的行为略有不同。
我怀疑某些函数调用以不同的顺序处理,但我想确定这一点。
我还观看了Google关于JavaScript优化的视频,以及《JavaScript: Good Parts》视频,但这些只是简单地提到了这个话题。

ECMA规范,像许多编程语言规范一样,规定了语言的语法和语义,而不是实现。这就是为什么你看不到JavaScript引擎的“解释”的原因。 - Matt Ball
如果您提供一个您所看到的例子,我可以解释其中的区别以及为什么发生了改变。 - chuckj
2个回答

4
我有完全相同的问题 - ECMA规范中的执行上下文提供了一些晦涩的见解。然而,即使在单个平台版本中也存在很多特殊情况。
通常,自动机、递归函数理论、形式语言理论和编译器设计等主题为“理解”解释程序提供了坚实的背景。
在抽象层面上,如果语义已经详尽地定义好了,而不需要“消歧”,那么无论实现如何,正式函数结果都将是相同的。实际上,有很多余地,就像一个引擎可能有而另一个引擎没有的.toSource()这样的额外功能。
stackoverflow参考:Gecko的操作语义是什么?

1
如果你能处理低级语言,可以查看V8TraceMonkey的源代码并进行研究。这是一种了解JavaScript引擎内部的方法,虽然有些困难,但非常有趣。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接