JavaScriptとECMAScriptの違いは何ですか?


462

ECMAScriptとJavaScriptの違いは何ですか?私が導き出したことから、ECMAScriptが標準で、JavaScriptが実装です。これは正しいです?

回答:


183

ECMAScriptは言語ですが、JavaScript、JScript、さらにはActionScript 3も「方言」と呼ばれます。ウィキペディアはこれにいくつかの光を投げかけています。


9
本当にいいだろうことなどJS1.5に例えばES5対応し、JavaScriptとECMAScriptのバージョンとの間に明確なマッピングですああ、私はそれを見つけた:en.wikipedia.org/wiki/JavaScript#Versions
サム・ジョセフ・

2
@Sam-Samのリンクの更新:en.wikipedia.org/wiki/JavaScript#Version_history
Rop

65
この回答はほとんど意味がなく、基本的にはウィキペディアを指し示しているため、反対票を投じ、賛成票を投じたヤンリー氏。Yang Liの答えは、はるかに詳細で有用です。また、どちらが言語/標準であるか、他の方言であるか、実装などであるかは、私が理解していることから、事実ではなく、意見を受け入れます。この答えはそれが事実であるように思わせますが。私が間違っていたら訂正してください。実際、私はこの回答による提案は一般的なコンセンサスでさえないと主張します。ほとんどの場合、ECMAScriptには標準としてJavaScriptが含まれています。
redfox05 2015年

1
@Rop-そのリンクへの更新:en.wikipedia.org/wiki/ECMAScript#Version_correspondence
HDave

5
同意しません。ECMAScriptが仕様です。JS、JScript、ActionScriptは、このような仕様を実装する言語です。
adripanico

611

少し歴史のレッスンが必要だと思います。

JavaScriptは元々Mochaという名前でLivescriptに変更されましたが、最終的にはJavaScriptになりました。

JavaScriptがECMAscriptの前に登場し、その歴史がその理由を教えてくれることに注意することが重要です。

最初から、JavaScriptはその名前をJavaから派生し、最初にJSの作成者であるBrendan Eichに、Netscape用のWeb用のJavaに似た言語を開発するように依頼されました。

しかしEichは、Javaはすべてのルールが複雑すぎるため、初心者でもコードを記述できる単純な言語を作成しようと決心しました。これは、セミコロンの必要性を緩和するなどの点で明らかです。

言語が完成した後、NetscapeのマーケティングチームはSunにJavaScriptをマーケティングスタントとして名前を付けることを許可するように要求しました。

ブラウザでJavaScriptがリリースされてから約1〜2年後、MicrosoftのIEがこの言語を採用し、JScriptなどの独自の実装を開始しました。同時に、ネットスケープがプロジェクトを閉鎖しなければならなくなって間もなく、IEは市場を支配していた。

Netscapeがダウンする前に、彼らはJavaScriptのパスをガイドする標準であるECMAScriptを開始することを決定しました。

ECMAScriptにはいくつかのリリースがあり、1999年には、次の10年間休止状態になる前の最後のバージョン(ECMAScript 3)をリリースしました。この10年間、Microsoftが主導権を握っていましたが、同時に彼らの製品は改善されていなかったため、Firefoxが誕生し(Eichが主導)、Chrome、Operaなど他のブラウザーのヒープ全体が生まれました。

ECMAScriptは、strictモードなどの機能を備えた2009年に第5版をリリースしました(第4版は廃止されました)。それ以来、ECMAScriptは勢いを増しており、これまでで最大の変更を加えた今から数か月以内に第6版をリリースする予定です。

ここhttp://kangax.github.io/es5-compat-table/es6/でECMAScript 6の機能のリストを使用でき、ブラウザのサポートも利用できます。CoffeeScriptで行うようにEcmascript 6の作成を開始し、コンパイラを使用してEcmascript 5にコンパイルすることもできます。

ECMAScriptが言語であり、JavaScriptが方言であるかどうかは議論の余地がありますが、重要ではありません。このように考え続けると、混乱するかもしれません。ECMAScriptを実行するコンパイラはありません。JavaScriptは、ECMAScriptと呼ばれる標準を実装する言語と考えられています。

ActionScript(Flashで使用)などのECMAScriptを実装する他の注目すべき言語もあります。


1
/ transpile ECMAScriptの5のコードに新しいES2015標準ダウンをコンパイルする方法に興味のある人のために、あなたはでバベル(旧6to5)利用可能をチェックアウトしたいと思うでしょうbabeljs.ioで、またはtraceur github.com/google/traceur-compiler。これらのツールを利用できるので、今すぐ「新しいJavaScript」を書き始めることができず、言語に追加された最新の機能をすべて利用することができます。
LWurm 2015年

1
LuaがECMAScriptを実装していることは知りませんでした。それを裏付けるものは何も見つからないようです。あなたのソースは何ですか?
battmanz

2
@YangLi以下のjeroneの答えに同意しますか?ECMAScript言語には、純粋なJavaScriptを記述するときに使用するDOM APIが含まれていないということですか?
theJollySin

11
@theJollySinうん、そうだね。ECMAScriptはブラウザー用に特別に設計されていないため、document.getElementByIdや他のDOM APIなどのメソッドは標準の一部ではありません。これらは、localStorageなどの他のブラウザー固有のメソッドとともに、WHATWG標準に属しています。ノードを取得し、インポートされたモジュールを使用しない場合は、ECMAScriptのみのAPIがあります。
ヤン李

1
複数の言語が同じ標準を実装し、同じ言語ではないのはどうしてですか?標準言語を定義します。一部の言語がC ++標準を実装している場合、それはC ++と呼ばれ、他のものではありません(その標準を実装しているため)。だから私はまだ同じ質問をしています...違いは何ですか?
Neme

157

ECMAScript = ES:

  • ECMAScriptは、スクリプト言語の標準です。

  • JavaScriptなどの言語はECMAScript標準に基づいています。

  • ECMA標準は、JavaScript(Netscape)とJScript(Microsoft)が最もよく知られているいくつかの元々のテクノロジーに基づいています。

  • ECMAとは、欧州コンピュータ製造業者協会を意味します

JavaScript = JS:

  • JavaScriptは、ECMAScript標準の最も一般的な実装です。

  • Javascriptのコア機能はECMAScript標準に基づいていますが、JavascriptにはECMA仕様/標準にはないその他の追加機能もあります。

  • ActionScriptとJScriptは、ECMAScriptを実装する他の言語です。

  • JavaScriptは標準化のためにECMAに提出されましたが、Javascriptという名前の商標問題のため、標準はECMAScriptと呼ばれるようになりました。

  • すべてのブラウザーにはJavaScriptインタープリターがあります。

ES5 = ECMAScript 5:

  • ES5はECMAScriptのバージョンです(古い/現在のもの)。

  • ES5は、あなたが知っていて、今日のブラウザーで使用しているJavaScriptです。

  • ES5は、今日のブラウザーで実行されるものに変換するためのビルドステップ(トランスパイラー)を必要としません。

  • ECMAScriptバージョン5は2009年12月に終了しました。すべての主要なブラウザー(Chrome、Safari、Firefox、IE)の最新バージョンがバージョン5を実装しています。

  • バージョン5.1は2011年6月に終了しました。

ES6 = ECMAScript 6 = ES2015 = ECMAScript 2015:

  • ES2015はECMAScriptのバージョンです(新規/将来のバージョン)。

  • 正式には、ES6の代わりにES2015という名前を使用する必要があります。

  • ES6は、TypeScriptとCoffeeScriptで対処されているコア言語の欠点の多くに取り組みます。

  • ES6はJavaScriptの次のイテレーションですが、今日のブラウザーでは動作しません。

  • ブラウザで実行するためにES5をエクスポートするトランスパイラはかなりあります。

BabelJS:

  • BabelJSは、新しいJavaScript ES6を古いJavaScript ES5に変換する最も人気のあるトランスパイラーです。

  • BabelJSは、次世代のJavaScriptを今日記述できるようにします(ES2015を意味します)。

  • BabelJSは単にES2015ファイルを取得し、それをES5ファイルに変換します。

  • 現在のバージョンのブラウザーは、まだサポートしていない場合でも、新しいJavaScriptコード(ES2015)を理解できるようになりました。

TypeScriptとCoffeeScript:

  • どちらもES5の上に構文糖を提供し、ES5準拠のJavaScriptにトランスコンパイルされます。 

  • TypeScriptまたはCoffeeScriptを記述し、トランスパイラーがそれをES5 JavaScriptに変換します。


3
Javascriptには、ECMA仕様/標準にないその他の追加機能もあります」これらの機能の例をいくつか挙げていただけますか?
Aruna Herath 2016年

1
JavaScriptはECMAScript標準の最も一般的な実装です。」では、「JavaScript」と呼ばれるこの実装のソースはどこにありますか?
bzeaman 2017年

7
私の質問では、答えの言い回しの潜在的な誤りを指摘しようとしています。「実装」という言葉が使われています。JavaScriptは「最も人気のある実装」であると言われています。実装とは、「技術仕様の実現」です。これはソフトウェアに変換されます。では、この「JavaScript」というソフトウェアはどこにあるのでしょうか。
bzeaman 2017

4
@Corrodias私はそれが単なるピッキングのように感じることに同意しますが、答えが物事を定義することに関するものであるとき、それは賢明だと思います。JavaScriptは言語であり、現在ではCがISO標準で標準化されている言語であるCに匹敵するECMAscriptで標準化されています。JavaScriptの用語は、単に「言語」になります。
bzeaman 2017

4
ES5、ES2015、およびBabelJSの概要は、サーバーサイドプログラミングから今日のJSスクリプトの世界に足を踏み入れたときに発生する可能性のある多くの混乱を明らかにします。すばらしい答えです。+1
RBT 2017

45

JavaScript = ECMAScript + DOM + BOM ;

  • ECMAScript®言語仕様は、オブジェクト、配列、数値などを作成および編集するためのすべてのロジックを定義しています...

  • DOM(D ]で文書O bject M odel)は、HTML / XML文書(例えばと通信することが可能となりますdocument.getElementById('id');)。

  • BOM(B rower O bject M odel)は、ブラウザオブジェクト(位置オブジェクト、履歴オブジェクト、フォーム要素など)の階層です。

JavaScript命名の歴史:

Mocha►LiveScript►JavaScript►(JSの一部となった)ECMA-262►ECMAScript►JavaScript(ECMAScript + DOM + BOMで構成)


7
では、node.jsの何がJavaScriptではないのでしょうか。DOM APIがないためです。
Aruna Herath、2016年

4
そのとおりです。 「Node.jsは、V8の最新バージョンに対して構築されています。」"V8はECMA-262、5th editionで指定されたECMAScriptを実装します...""ただし、DOMは通常、JavaScriptエンジンではなくブラウザによって提供されます。V8についても同様です。GoogleChromeは、 DOM。」(出典:nodejs.org/en/docs/es6github.com/v8/v8/wiki/Introduction
jerone

7
@jerone JavaScriptコードを記述するときに使用しているECMAScriptのバージョンを教えてください。ブラウザやライブラリによって異なりますか?
theJollySin

4
に言及してもらえますJavaScript = ECMAScript + DOM API;か?
Koray Tugay

2
@ koray-tugayここを除いて、JavaScriptが正確に何であるかについてのドキュメントはあまりありません。それがこの質問がとても人気がある理由だと思います。「式」JavaScript = ECMAScript + DOM API;は、JavaScriptを構成する文書で合意された用語全体に基づいています。
jerone、

42

技術的にECMAScriptは、誰もが使用および実装している言語です。これは、何年も前にNetscapeとMicrosoftがJavaScript(Netscapeのスクリプト言語)とJScript(Microsoftの)の間でスクリプトを標準化しようとしたときに作成された仕様です。

その後、これらすべてのエンジンは見かけ上ECMAScriptを実装しますが、JavaScript(名前)は、従来の命名上の理由と、Mozillaによるさまざまな非標準拡張機能(実際には「バージョン」にしたい)のためのマーケティング用語としてぶらついています。 )


12
NetscapeとMicrosoftは実際一度は仲良くなりましたか?
Cole Johnson

2
BrandonはJSをMicrosoftより前の標準にしたいと思っていました。彼が見つけたのはECMAだけでした。
ジョーシモンズ

30

ECMAScript、つまりESとは何ですか?

ECMAScriptはスクリプト言語の標準であり、Javascript言語はECMAScript標準に基づいています。

JavaScriptはECMAScriptとまったく同じですか?

  • いいえ、JavaScriptはECMAScriptとまったく同じではありません。
  • Javascriptのコア機能はECMAScript標準に基づいていますが、JavascriptにはECMA仕様/標準にはないその他の追加機能もあります。

JavaScript = ECMAScript + DOM API;

次のようなDOM API: document.getElementById('id');

他の言語はECMAScript標準を使用していますか?

  • はい、ECMAScript標準をコアとして実装しているJavaScript以外の言語があります。
  • ActionScript(Adobe Flashで使用)とJScript(Microsoftで使用)はどちらもECMAScript標準を実装する言語です。

なぜECMAScriptと呼ばれるのですか?

  • JavascriptはもともとNetscapeで作成されたもので、言語を標準化したいと考えていました。だから、彼らはに言語を提出E uropean C omputer M anufacturerのA標準化のためにssociation(ECMA)。
  • しかし、Javascriptという名前には商標の問題があり、この標準はECMAScriptと呼ばれるようになりました。
  • 商標の問題があるため、Microsoftのバージョンの言語はJScriptと呼ばれています。たとえJScriptは、そのコアはJavascriptと同じ言語ですが。

プレーンJSとES6 JSのコースがあります。どれを取る?ES6はプロの設定でより多く使用されますか?ありがとう。
MasterJoe2

16

さまざまなJavaScriptバージョンがECMAScript標準の実装です。


11

私はこれが古い記事であることを知っていますが、うまくいけばこれが誰かを助けるでしょう。

1990年代には、ネットスケープのjavascript、マイクロソフトのJsスクリプトのように、さまざまなバージョンのjsが登場し始めました。したがって、ecmascriptが標準として導入されました。しかし、ecmascriptは、そのコア構文、タイプ、オブジェクトなどを指定するjavascriptの一部のみを形成します。おそらく、diff全体でのjavascriptの一貫性のない実装を説明しています。ブラウザー

リファレンス-Wrox(Web開発者向けのプロフェッショナルJavascript)


10

私の理解では、ECMAScriptは「理論」または「仕様」であり、Javascriptは「実用」または「実装」です。


10

JavaScript ECMAScript言語です。

ECMAScript は必ずしも JavaScriptである必要はありません


7

既存の回答は要点をかなりよく言い換えています。

重要な点は、ECMAScriptはドメイン固有の拡張機能がないため、最小限の抽象言語であり、それ自体は役に立たないということです。仕様定義のみ言語及びそれのコアオブジェクト。

JavaScriptやActionScriptなどの方言はドメイン固有のライブラリを追加するので、意味のあるものに使用できます。

多くのECMAScriptエンジンがあり、それらのいくつかはオープンソースであり、他は独自仕様です。それらをプログラムにリンクし、ネイティブ関数をグローバルオブジェクトに追加して、プログラムをスクリプト可能にすることができます。ほとんどの場合、それらはブラウザーで使用されます。


5

Javascriptは元々の名前で、Javaの人気を利用することを目的としています。ECMAは、最終的に導入された標準を監督する標準化団体であり、名前はほぼ同等です。

実装には、V8やRhinoなどの他の名前があります。


3

ECMAScriptJavaScrip tの標準です。MDNの次のステートメントをご覧ください。

ここに画像の説明を入力してください

JavaScript

JavaScript(JS)は、ファーストクラスの機能を備えた軽量のインタープリター型またはJITコンパイルのプログラミング言語です。Webページのスクリプト言語として最もよく知られていますが、node.js、Apache CouchDB、Adobe Acrobatなど、多くの非ブラウザー環境でも使用されています。JavaScriptは、プロトタイプベースのマルチパラダイム、動的言語であり、オブジェクト指向、命令型、宣言型(関数型プログラミングなど)のスタイルをサポートしています。JavaScriptの詳細を読んでください。


ECMAScript

JavaScriptの標準はECMAScriptです。2012年現在、すべての最新ブラウザーはECMAScript 5.1を完全にサポートしています。古いブラウザーは少なくともECMAScript 3をサポートしています。2015年6月17日、ECMA InternationalはECMAScriptの6番目のメジャーバージョンを公開しました。これは正式にはECMAScript 2015と呼ばれ、最初はECMAScript 6またはES6と呼ばれていました。それ以来、ECMAScript標準は毎年のリリースサイクルにあります。このドキュメントは、最新のドラフトバージョン(現在はECMAScript 2018)を参照しています。

詳細については、こちらをご覧ください


3

これが私の発見です:

JavaScript:デビッドフラナガンによって書かれた決定的なガイドは非常に簡潔な説明を提供します:

JavaScriptはWebの初期にNetscapeで作成されました。技術的には、「JavaScript」は、Sun Microsystems(現在のOracle)からライセンスされた商標で、Netscape(現在のMozilla)の言語の実装を説明するために使用されています。Netscapeは標準化のための言語をECMAに提出しましたが、商標の問題のため、標準化されたバージョンの言語は扱いにくい名前 "ECMAScript"のままでした。同じ商標上の理由から、この言語のMicrosoftバージョンは正式には「JScript」として知られています。実際には、ほとんどすべての人がJavaScript言語を呼び出します。

ブログ記事マイクロソフトによっては、フラナガンは言って説明するものと一致しているようです。..

ECMAScriptは、私たち全員が知っており、愛しているJavaScript言語の正式名称です。

..これによりJavaScriptこの参照投稿(Microsoftによる)のすべての箇所をに置き換える必要があると思いますECMASCript。彼らは実際にはECMAScriptこのより最近のより技術的なドキュメントページでのみ使用することに注意しているようです。

w3schools.comは上記の定義に同意するようです:

JavaScriptは1995年にBrendan Eichによって発明され、1997年にECMA標準になりました。ECMA-262は標準の正式名称です。ECMAScriptは言語の正式名称です。

ここで重要なのは、言語の正式名称です

MozillaのJavaScriptバージョンのページを確認すると、次のステートメントが表示されます。

非推奨。言語機能の明示的なバージョン管理とオプトインはMozilla固有であり、削除中です。Firefox 4は、JavaScriptバージョン(1.8.5)を参照する最後のバージョンでした。新しいECMA標準では、JavaScript言語機能が、ECMAScript 2015などのECMA-262エディションで最初の定義とともにしばしば言及されています。

また、最新のリリースノートを見ると、次のようなECMAScript標準への参照が常に表示されます。

  • ES2015 Symbol.toStringTagプロパティを実装しました(バグ1114580)。

  • ES2015 TypedArray.prototype.toString()およびTypedArray.prototype.toLocaleString()メソッドを実装しました(バグ1121938)。

Mozilla Web Docsには、ECMAScriptとJavaScriptの違いを説明するページもあります。

ただし、Webブラウザーのコンテキストで理解される包括的な用語「JavaScript」には、いくつかの非常に異なる要素が含まれています。1つはコア言語(ECMAScript)で、もう1つはDOM(ドキュメントオブジェクトモデル)を含むWeb APIのコレクションです。

結論

私の理解では、人々はJavaScriptという単語をやや寛大に使用して、コアECMAScript仕様を参照しています。

最近のすべてのJavaScript実装(またはJavaScriptエンジン)は、実際にはECMAScript実装です。Google のV8エンジンの定義を確認してください。例:

V8は、Googleのオープンソースの高性能JavaScriptエンジンで、C ++で記述され、GoogleのオープンソースブラウザであるGoogle ChromeやNode.jsなどで使用されています。ECMA-262で指定されているECMAScriptを実装します。

JavaScriptとECMAScriptは同じ意味で使われているようですが、実際にはECMAScriptエンジンだと思いますか。

そのため、ほとんどのJavaScriptエンジンは実際にECMAScript標準を実装していますが、それらをECMAScriptエンジンと呼ぶのではなく、JavaScriptエンジンと呼びます。この答えは、私が状況を見る方法もサポートしています。


2

「JavaScript」という名前がSunによって所有されているという事実がなければ、「ECMAScript」という言葉を使うことはないでしょう。すべての意図と目的のために、言語はJavaScriptです。ECMAScriptの本を探している書店に行くのではないですか。

「JavaScript」が実装であると言うのは少し簡単すぎる。JScriptはMicrosoftの実装です。


1
ECMAscriptという単語に問題はありません...ビデオの代わりにMPEGと言うのが変だと思ったことはありませんか?
ryansstack 2009年

7
はは。ECMAScriptが皮膚病のように聞こえると言ったのはブレンダンアイヒではなかったのですか。:-)
Nosredna、2009年

7
Sunは、JavaScriptではなくJavaという言葉を所有しています。
James R. Clayton

1
@ JamesR.Clayton JavaScriptはWebの黎明期にNetscapeで作成されました。技術的には、「JavaScript」は、Sunscape(現在のOracle)からライセンスされた商標であり、Netscape(現在のMozilla)の言語の実装を説明するために使用されています。
Koray Tugay

1

JavaScriptは、ECMAScript標準に基づいて形成された言語の1つのブランチです。ECMAはヨーロッパのコンピュータ製造業者協会であると私は信じています。

ECMAスクリプト標準に基づいて形成された別の一般的な言語は、Adobe Flash / Flexで使用されるActionScriptであることを忘れないでください。

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