【问题标题】:How do JavaScript interpreters/engines work?JavaScript 解释器/引擎是如何工作的?
【发布时间】:2010-08-09 12:58:01
【问题描述】:

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

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

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

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

【问题讨论】:

  • ECMA 规范与许多编程语言规范一样,指定语言的语法和语义,而不是实现。这就是为什么您不会看到 Javascript 引擎的“解释”。
  • 如果你提供一个你看到的例子,我可以解释其中的区别以及为什么会改变。

标签: javascript dom-events javascript-engine


【解决方案1】:

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

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

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

stackoverflow 参考:What are Gecko's operational semantics?

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-07
      • 1970-01-01
      • 2017-08-08
      • 2021-10-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多