我很想知道 JavaScript 解释器(如果你喜欢的话,引擎)是如何工作的。我知道 JavaScript 没有被编译。我查看了 ECMA 规范,但它没有解释实际引擎是如何工作的。
我问这个的主要原因是因为我想了解为什么 IE7 的行为与 IE8 或 Firefox 3.5+ 略有不同。
我怀疑某些函数调用以不同的顺序处理,但我想确定。
我还观看了谷歌关于 JavaScript 优化的一些视频以及 JavaScript: Good Parts 视频。这些简单地谈到了这个话题。
我很想知道 JavaScript 解释器(如果你喜欢的话,引擎)是如何工作的。我知道 JavaScript 没有被编译。我查看了 ECMA 规范,但它没有解释实际引擎是如何工作的。
我问这个的主要原因是因为我想了解为什么 IE7 的行为与 IE8 或 Firefox 3.5+ 略有不同。
我怀疑某些函数调用以不同的顺序处理,但我想确定。
我还观看了谷歌关于 JavaScript 优化的一些视频以及 JavaScript: Good Parts 视频。这些简单地谈到了这个话题。
我有完全相同的问题 - ECMA 规范中的执行上下文。确实提供了一些晦涩的!洞察力。不过,即使是单一平台的版本,特质也很猖獗。
通常,关于自动机、递归函数理论、形式语言理论和编译器设计的主题为“理解”解释器提供了坚实的背景。
在抽象中,如果语义被详尽地定义好,不需要“消歧”,那么无论实现如何,形式函数的结果都是相同的。在实践中,有很多回旋余地,正如 .toSource() 等附加功能所见,一个引擎可能有而另一个引擎没有。
stackoverflow ref:Gecko 的操作语义是什么?
如果您可以处理低级语言,请查看V8或TraceMonkey的来源并研究它们。理解 JavaScript 引擎的内部结构有点困难,但它非常有趣。