web-dev-qa-db-ja.com

JavaScriptとは何ですか?

W3C HTML Validator のようなJavaScriptの適合性について webpage をテストする方法を探していたときに、このすべてが始まりました。まだ見つけていません。だから何か知っているなら教えてください...

  1. 私は公式のJavaScriptページを探して、 ECMAスクリプト を見つけました。これらの人々はスクリプト言語を標準化し(私はそれをJavaScriptと呼ぶ気がなくなった!)、それをECMA-262( Wikipedia )と呼んでいます。彼らの最新の作品はエディション5.1です

  2. JavaScriptはMozilla Corporationによって開発され、最新の安定バージョンは1.8.5( これを参照 )であり、ECMAのエディション5.1に基づいています。

  3. リンクされているウィキペディアのページ は方言に言及しています。 MozillaのJavaScript 1.8.5は、 JScript 9 (IE)とJavaScript(Chromeの V8 [ Wiki ])と一緒に方言としてリストされています。その他。 JavaScript 1.8.5はECMA-262の派生物であり、 SpiderMonkey [ Wiki ]はそれを実行するエンジンであることを理解できますか?そしてChromeは独自の方言を持ち、V8エンジンはそれを実行するプログラムですか?

これらすべての方言がECMA-262に基づいているため、もう理解できないのは「JavaScriptとは」ですか?本当にクロスブラウザのスクリプト言語はありますか?さまざまな実装者が集まり、方言の相互互換性について同意しますか?これはECMAですか?

96
Lord Loh.

ほとんどすべての成熟した言語は仕様によって定義されており、コンパイラまたはインタープリタはその仕様で定義された標準に準拠しようとします。ただし、標準が言語の作成者によって定義されていない限り、成功することはほとんどありません。

C++ 2003標準C#4仕様Java 7仕様 など、さまざまなものがオンラインで見つかります。これらの多くはECMAまたはISOの標準化番号を持っています。これらは、標準を登録してより公式にすることができる組織にすぎません。

Rubyは歴史的に少し異なって物事を行いました 仕様として実行可能なテストのセット を持っています。したがって、インタープリターを作成して標準のRubyと呼びたい場合は、これらすべてのテストに合格したインタープリターを作成するだけで済みます。しかし、Rubyは より正式な仕様になる可能性が高い でも最終的にはです。

JavaScriptは、おそらく進化した方法を除いて、違いはありません。

JavaScriptはNetscapeによって最初に作成されました。彼らはそれをLiveScriptと呼んでいましたが、Javaに似ていて、Sunとの契約を結んだため、NetscapeとJavaの両方のマーケティングにメリットがありました。MicrosoftにはVBScriptと推測)基本的にはJavascriptをコピーしましたが、その名前はSunが所有していたため、彼らはJScriptを根気よく呼んでいました。

しかし、JScriptは構文がJavascriptに非常に似ていますが、COMを多用しました。たとえば、IE5と6はnew ActiveXObject("Microsoft.XMLHTTP");を使用してXMLHttpRequestオブジェクトをインスタンス化します。

そして、Javascriptの並行した、類似した、しかし異なる "方言"が生まれました。時間の経過とともに、IEよりも市場シェアが低いブラウザを所有するさまざまなグループが言語の標準化を試みてきましたが、Microsoftは長年にわたって抵抗を続けてきました。V8まで。

V8は高速でした。それは全く新しい市場基準を設定しました。それは他のすべてを貧しく見せました。

そして、Microsoftに対するさまざまな独占禁止法の訴訟を通じて、IEは市場シェアを失っていました。突然、標準化をサポートすることはMicrosoftの利益になりました。まだありませんが、順調に進んでいます。

その間、V8はオープンソースであり、人々は Node.JS などの高速Javascriptパーサーの新しい用途を考え始めることができました。

しかし、あなたの質問に戻ると、Javascriptとは何ですか?これはECMAScriptの共通(および元の)名であり、ブラウザのドメインオブジェクトモデルをナビゲートおよび操作するために使用されますが、これに限定されない プロトタイプ言語 の仕様です。

ECMA-262は単なる標準的な定義であり、ECMA-334はC#の標準的な定義です。 ECMAScriptは、ECMA-262が作成されたとき、'99年に戻ってすべての関係者が同意できる唯一の名前でした。

96
pdr

JavaScriptは、ECMAScriptの一般的に使用される実装です。 Scheme family とよく似ています。 Schemeでは、高度に形式化された仕様があります。現在のバージョンはR6RSですが、R5RSはこの投稿の時点ではるかに一般的に実装されている標準です。 Schemeの古さと一般的な哲学のため、実装はECMAScriptよりも分散しています。

MozillaのFirefoxとGoogleのChromeの両方の市場シェアが爆発的に増加しているため、Javascriptが一般的になっています。もともとはNetscape Navigatorで足場を築き、最終的にはMozillaブラウザになり、次にFirefox(そして、Scheme群衆で実行する場合はIceweasel)になりました。

さて、ここで少し注意が必要です。 Javascriptのパフォーマンスのほとんどは、パーサーとそれを実行するエンジンから得られます。これがブラウザ間の本当の違いが明らかになるところです。 Spidermonkeyは、V8とは異なる方法でJavascriptを実行します。 Javascriptはまだ完全に一般的なライブラリの欠如のような大まかな点がありますが、それはまだ作業中です。

したがって、JavascriptがC++の場合、ECMAScriptはC++ 11となり、UNIXとG ++が「標準」に最も近くなりますが、.NETのC++とObjective C++は、ECMAScriptからActionscriptが行う方法のはるかに離れたところにあります。

23
World Engineer