2011-07-29 8 views
31

V8とECMAScriptの相違点の一覧はどこにありますか?たとえば、V8はconstをサポートしていますが、これはECMAScript標準の一部ではありません。V8とECMAScriptの相違点

答えて

40

編集:直接答え:Track status of ES5 implementations in progressV8 googlecode issues tagged es5 またはhttps://github.com/joyent/node/wiki/ECMA-5-Mozilla-Features-Implemented-in-V8

V8を示しエッジケースの一握りから現在さておきES5のすべてを実装し、だけにして順番にどのように他の現在の大多数に準拠してブラウザーは与えられた状況を処理します。

それ自体では生きていないので、あなたが扱う相違点のほとんどすべてが、それを囲むホスト環境の実装になります。ほとんどの場合、これはWebブラウザが提供するさまざまなAPIです。ブラウザ以外の例として、Node.jsはファイルシステムとネットワークの対話のためのカスタムAPIを提供します。コア言語の面では、それほど大きな揺れの部屋はありません。 DOMを除いて、JavaScriptは使い方が簡単で(なぜそれがすばらしいのか)、仕様書があります。

ES5はES3からの反復処理で、 'use strict'を使用しないと、ほぼ100%後方互換性があります。ほぼ10年の停滞の後、主要なJavaScriptエンジンの実装者の間でコンセンサスを得ることができないことにより、ES5は生まれつき制限され、言語の最悪の問題点を取り除きました。主流の使用ES5の範囲は、Array extras、Object extras(主にObject.create)、Function.bind、strictモード(ストライピング機能についてはが完全に)、JSONとbase64のようなネイティブヘルパー。

この 240 page specificationの大半は、苦労など、ほぼ15年間、JavaScriptで存在している行動についてのすべての詳細だけでなく、非推奨となり、最終的に with(削除される機能のリスト、 evalの様々な用途を定義するのに費やされている

)。

ハーモニー(ES6)は、私たちが目にする最初の大きな変化です。 ES5は、同じページにエンジン実装を実装し、JSの問題のある部分の大部分を取り除くという目標を達成しました。 ES6を楽しみにして、修正するために構文の変更を必要とするいくつかの基本的な言語問題に取り組む時です。 ES6は2013年後半に完成予定ですが、JSエンジンでは大規模なチャンクが既に実装されており、実際の使用方法をテストして確認しています。ウェブは生きているものであり、新しい標準を実装することは、新しい仕様を作成してそれを他のほとんどの業界と同じように世界に広めることではありません。アイデアは浮かれており、実装者レベル(V8、Spidermonkey、JSC、Chakraなどを書いた人)と実際のユーザーレベル(この場合、ユーザーはこれらのエンジンで実行するコードを記述しているWeb開発者です) 。アイボリータワーディクテーションでは使用できなくなります。

具体的にはconstの場合:これは現在完全には完全には定義されていません。これはV8とSpidermonkeyの機能は似ていますが、まったく同じではなく、ES6と似ていますがまったく同じ意味ではありません。ターゲットオーディエンスのエンジンが現在それをサポートしていると思っているのであれば、おそらくそれを使うのは安全でしょうが、実装されているようにそれは公式な仕様の一部ではありませんでした。 migrating let' andconst'

それ以外にも、JSスクリプトが実行されている特定のエンジンによって公開される「ホストオブジェクト」があります.JavaScriptは実装として最初に存在し、2番目は仕様として存在したため、最近まで非専門家には明らかでしたダイビングラインがどこにあるかを知る。ブラウザで実行されている場合(通常はそうですが)、Document Object Modelは自動使用のためのホストオブジェクトとして公開されています。DOMの機能は、主にIDLを使用して記述されており、W3Cの権限の下にあります。多くの仕様実装には、6つのトップレベルセクション、およそ50の別々のワーキンググループ、およそ1000の別個の仕様が含まれています。これらはJavaScriptに公開されているインターフェイスですが、JavaScript仕様の要件によって完全に変更されていません。 DOMは、記述された機能性の巨大な空間とその継続的に変化する実装を包含する。

+0

私の答えを改善することによって、私はそれを信用する能力を失ったことを知りました。コミュニティのwikiは地獄のように馬鹿です。 –

+0

明らかに私は間違っていて、ダムです。http://meta.stackexchange.com/questions/113799/i-edit-my-answers-a-lot-how-can-i-prevent-myself-from-forfeiting-credit-原因は –

+0

です。問題は私がより高いレベルで質問に答える傾向があるということです。 v8エンジンに関するこの比較的平凡な質問のように、バルーンではなく、実装に関する深い議論があります。これはどこかにあるはずです。しかし、私はどこがわからないのですか? –

関連する問題