JavaScriptとは何ですか?


95

これはすべて、W3C HTML ValidatorのようなJavaScript準拠のWebページをテストする方法を探していたときに始まりました。まだ見つけていません。何か知っているなら教えてください...

  1. 公式のJavaScriptページを探して、ECMA Scriptを見つけました。これらの人々はスクリプト言語を標準化しており(JavaScriptをもう呼び出す気はありません!)、それをECMA-262(Wikipedia)と呼びました。彼らの最新の作品はEdition 5.1です

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

  3. リンクWikipediaのページには、方言に言及しています。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ですか?


10
ActionScriptについて言及するのを忘れていましたが、これはECMAの方言であり、Javascriptと呼ばれるものとは何の関係もありません。
DaveRandom

4
適合性についてはそれほど強調していませんが(すでに強調したように)、jslintはコードをチェックするのに適しています。
SomeKittens

2
@MadaraUchiha-「jQueryを使用するだけです。すべてが大丈夫です。」大丈夫ではありません。それが私がこれを調査し始めた理由です。私のサイトbharath.lohray.comはChromeとFirefoxで正常に動作し、W3Cバリデーターもエラーを生成しませんが、最新のIEでは大いに時間がかかります!さらに、anybrowser.org / campaignの人々のアイデアが好きな限り、私は真にクロスブラウザになることはできません!
ローLord。

7
ページについては、スクロールが非常に面倒で、上にあります。ただのIMO。そして、あなたが実際に主であるとしても、「主」のタイトルは地獄のように豪華に聞こえます。
NullUserException

11
不必要に派手です。SEで上下にスライドする投稿は表示されません。それがプロ並みのウェブサイトであることを意図していて、それでもトランジションが必要な場合は、フェードイン/フェードアウトのようなもっと控えめなものを使用してください。
NullUserException

回答:


96

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

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は、を使用してXMLHttpRequestオブジェクトをインスタンス化しますnew ActiveXObject("Microsoft.XMLHTTP");

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

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

また、Microsoftに対するさまざまな独占禁止法訴訟を通じて、IEは市場シェアを失っていました。突然、標準化をサポートすることがマイクロソフトの利益になりました。私たちはまだそこにいませんが、正しい軌道に乗っています。

一方、V8はオープンソースであったため、人々はNode.JSなどの高速Javascriptパーサーの新しい使用法について考え始めることができました。

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

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


7
私があなたの答えを複数回支持することができたなら、私はそうしたでしょう:-)これはいくつかのことをより明確にするのに役立ちます。Cコンパイラの類推により、状況は少し理解しやすくなります:-) JavaScriptがバイナリにコンパイルされず、エンドユーザーに非/準機能スクリプトが表示されることを除きます。だから、私は標準に合わせてページを構築することはできず、すべてのブラウザで同じように機能することを望んでいることを理解していますか?(まだ有効な単語です)。
ローLord。

1
@LordLoh。それは正しいです。ただし、jQueryやPrototypeなどのライブラリを使用して、違いを抽象化することができます。
PDR

この投稿と調査は、jQueryアニメーションがIE9で動作しなかったときに始まりました。私はanybrowser.orgキャンペーンのアイデアに嘘をつき、標準に固執できることを望んでいました。HTML5 / CSS3 / JS。JSは私のボンネットのバグになってしまいました。
ローLord。

1
@LordLoh。それがjQueryのせいだとは思いません。HTMLの問題(たとえば、引用符が欠落している)を一目で見れば、そのようにJavascriptを最小化すると、あまり正確でないと奇妙な結果になる可能性があります。セミコロンを忘れてしまい、主要なブラウザの1つで圧縮して初めて失敗したという問題をずっと前に覚えています。jQueryは非常に安定しており、IE9で問題なく動作するはずです。
-pdr

5
@LordLoh。console.logが問題です。開発者ツールバーを開いて(したがって、「コンソール」オブジェクトを作成しない限り)機能しません。
pdr

23

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

Javascriptは、MozillaのFirefoxとGoogleのChromeの両方の市場シェアの爆発的な成長により、現在では一般的になっています。元々はNetscape Navigatorで足場を築き、最終的にはMozillaブラウザになり、次にFirefoxになりました(Schemeの群衆と一緒に走るならIceweasel)。

さて、ここに少し危険があります。Javascriptのパフォーマンスの大部分は、それを実行するパーサーとエンジンによるものです。ここで、ブラウザ間の実際の違いが明らかになります。Spidermonkeyは、V8とは異なる方法でJavascriptを実行します。Javascriptにはまだ完全に共通のライブラリがないなどの大雑把な点がありますが、それは現在取り組んでいます。

JavascriptがC ++である場合、ECMAScriptはC ++ 11になり、UNIXおよびG ++が「標準」に最も近く、C ++ for .NETおよびObjective C ++は、ActionscriptがECMAScriptから行う方法と同じようにさらに遠くにあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.