6

我很想知道 JavaScript 解释器(如果你喜欢的话,引擎)是如何工作的。我知道 JavaScript 没有被编译。我查看了 ECMA 规范,但它没有解释实际引擎是如何工作的。

我问这个的主要原因是因为我想了解为什么 IE7 的行为与 IE8 或 Firefox 3.5+ 略有不同。

我怀疑某些函数调用以不同的顺序处理,但我想确定。

我还观看了谷歌关于 JavaScript 优化的一些视频以及 JavaScript: Good Parts 视频。这些简单地谈到了这个话题。

4

2 回答 2

4

我有完全相同的问题 - ECMA 规范中的执行上下文。确实提供了一些晦涩的!洞察力。不过,即使是单一平台的版本,特质也很猖獗。

通常,关于自动机、递归函数理论、形式语言理论和编译器设计的主题为“理解”解释器提供了坚实的背景。

在抽象中,如果语义被详尽地定义好,不需要“消歧”,那么无论实现如何,形式函数的结果都是相同的。在实践中,有很多回旋余地,正如 .toSource() 等附加功能所见,一个引擎可能有而另一个引擎没有。

stackoverflow ref:Gecko 的操作语义是什么?

于 2011-04-16T21:28:53.440 回答
1

如果您可以处理低级语言,请查看V8TraceMonkey的来源并研究它们。理解 JavaScript 引擎的内部结构有点困难,但它非常有趣。

于 2010-08-09T13:45:09.460 回答