6

JavaScript インタープリター (必要に応じてエンジン) がどのように機能するかを知りたいです。JavaScript がコンパイルされていないことは承知しています。ECMA 仕様を確認しましたが、実際のエンジンがどのように機能するかについては説明されていません。

私がこれを尋ねている主な理由は、IE7 の動作が IE8 または Firefox 3.5+ とわずかに異なる理由を理解したいからです。

特定の関数呼び出しが異なる順序で処理されると思われますが、確実に知りたいです。

JavaScript の最適化に関する Google の講演と、JavaScript: Good Parts のビデオもいくつか見ました。これらは、トピックに簡単に触れました。

4

2 に答える 2

4

私はまったく同じ問題を抱えています-ECMA仕様の実行コンテキスト。いくつかのあいまいさを提供します!洞察。ただし、単一のプラットフォームのバージョン間でも特異性が蔓延しています。

一般に、オートマトン、再帰関数理論、形式言語理論、およびコンパイラー設計に関するトピックは、インタプリタを「理解する」ための確かな背景を提供します。

抽象化では、セマンティクスが「曖昧さ回避」を必要とせずに徹底的に明確に定義されている場合、正式な関数の結果は実装に関係なく同一になります。実際には、.toSource()などのエクストラに見られるように、あるエンジンにはあるかもしれないし、ないかもしれない多くのしわくちゃの余地があります。

stackoverflow ref:Geckoの操作的セマンティクスは何ですか?

于 2011-04-16T21:28:53.440 に答える
1

If you can deal with low-level languages, look at the sources of V8 or TraceMonkey and research them. It is a bit difficult way to understand the internals of the JavaScript engines, but it is quite interesting.

于 2010-08-09T13:45:09.460 に答える