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

时间:2010-08-09 12:58:01

标签: javascript javascript-events javascript-engine

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

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

我怀疑某些函数调用是以不同的顺序处理的,但我想肯定地知道。

我还通过谷歌谈论JavaScript优化以及JavaScript:Good Parts视频观看了一些视频。这些主题简要介绍了这个话题。

谢谢

2 个答案:

答案 0 :(得分:4)

我在ECMA规范中遇到了完全相同的问题 - Execution Contexts。确实提供了一些模糊不清!洞察力。尽管在单个平台的版本中,特性也很猖獗。

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

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

stackoverflow ref:What are Gecko's operational semantics?

答案 1 :(得分:1)

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