15

v8は ECMAScript 第 5 版の問題についてかなり無口であることに気付きました。

V8 は、ECMA-262 第 3 版で指定されている ECMAScript を実装し、Windows XP および Vista、Mac OS X 10.5 (Leopard)、および IA-32 または ARM プロセッサを使用する Linux システムで動作します。

バグトラッカーでさえ静かに見えます...

あるバグで、コミッターがこれを書いているのを見つけることができます:

V8 は、JavaScript ではなく、ECMAScript の実装です。後者は、Mozilla によって作成された ECMAScript の標準化されていない拡張です。V8 は、WebKit/Safari の ECMAScript 実装である JSC とプラグイン互換であることを意図しています。そのため、JSC にもある ECMAScript の非標準拡張機能を多数実装しており、これらのほとんどは Mozilla の JavaScript 言語にもあります。JSC にない非標準機能を V8 に追加する予定はありません。

興味深いことに、彼は 2010 年 10 月 8 日に ECMAScript 5 が公開された 2009 年 12 月にそれを書き、その 2 か月前に ECMAScript 5 のスーパーセットである Javascript 1.8.5 がリリースされました。

では、Google が ECMAScript 第 5 版で実行できるように v8 をいつ更新するのかという疑問が残ります。ECMAScript の最新の標準化にアップグレードする計画さえありますか?

4

1 に答える 1

27

ECMAScript 5 は実際には、実装を「実行するために更新」する必要がないように設計されています。

既存の動作にはほとんど変更がありませんが、主に ES5 では新しいネイティブ オブジェクト (例: Object.createArray.prototype.mapString.prototype.trimなど) が追加され、既存の事実上の機能の一部が標準化されています (ユビキタスな「文字列リテラルの行末記号」、「文字列のプロパティ アクセス」など)。あまり一般的でない「アクセサ」および配列/文字列拡張への「間接評価動作」)。

動作の最大の変更である厳密モードは、まったく同じ理由でオプトインになりました。ES3 から ES5 への移行の負担を軽減します。

そうは言っても、V8 は厳密モード (最近追加されたものの 1 つ) を含む ES5 機能の注目すべきチャンクを実装しています。

私のES5互換を見ると。表を見ると、Chrome に実装されている ES5 の機能を見ることができます。これは、V8 と密接に (そして私は完全に) 相関しているはずです。

また、厳密モードのサポートは主に Chromeで実装されていることがわかります。つまり、V8 でも同様に実装する必要があります。再確認するために、コンソール (v8 v3.2.3.1) でこのコードを実行したところ、期待どおりに SyntaxError が発生しました。

> (function(){"use strict"; with({x:1}) return x})()
(shell):1: SyntaxError: Strict mode code may not include a with statement
(function(){"use strict"; with({x:1}) return x})()
                          ^^^^

それで、あなたはそれを持っています。V8は厳密モードを含むES5 機能の大部分を確実に実装しています ;)

于 2011-05-26T14:00:16.843 に答える