web-dev-qa-db-ja.com

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

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

430
Guy

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

179
Ryan Florence

私はちょっとした歴史の授業がやってくると思います。

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

JavaScriptはECMAscriptよりも前に登場したものであり、その歴史からその理由がわかります。

最初から始めるために、JavaScriptはJavaからその名前を由来とし、最初はBrendan Eich(JSの作成者)はNetscape用のWeb用のJavaに似た言語を開発するように依頼されました。

しかしEichは、Javaはそのすべての規則で複雑すぎるので、初心者でもコーディングできる単純な言語を作成しようとしたことを決定しました。これは、セミコロンを使用する必要がなくなったことなどから明らかです。

言語が完成した後、NetscapeのマーケティングチームはSunにマーケティングスタントとしてそれをJavaScriptと名付けることを彼らに許可するように要求し、そしてそれ故にJavaScriptを一度も使ったことのない人々のほとんどがそれがJavaに関連すると思う理由。

JavaScriptがブラウザにリリースされてから約1〜2年後に、MicrosoftのIEがその言語を取り入れ、JScriptなどの独自の実装を作り始めました。同時に、IEが市場を支配していましたが、Netscapeがプロジェクトを中止しなければならなくなって間もなくしました。

Netscapeが倒れる前に、彼らはECMAScriptという、JavaScriptの道を導く標準を開始することを決めました。

ECMAScriptにはいくつかのリリースがあり、1999年に彼らは次の10年間休止状態に入る前に彼らの最後のバージョン(ECMAScript 3)をリリースしました。この10年間で、Microsoftはシーンを支配しましたが、同時に彼らは製品を改良していなかった、そしてそれ故にFirefoxは生まれました(Eichによって導かれる)そしてChrome、Operaのような他のブラウザの全体の山。

ECMAScriptは、厳格モードなどの機能を備えた2009年に第5版をリリースしました(第4版は放棄されました)。それ以来、ECMAScriptは大きな勢いを得て、今から数か月以内に第6版をリリースする予定です。

ここでECMAScript 6の機能のリストを使うことができます http://kangax.github.io/es5-compat-table/es6/ そしてまたブラウザのサポート。 CoffeeScriptと同じようにEcmascript 6を書き始めて、Ecmascript 5にコンパイルするためにコンパイラを使うことさえできます。

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

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

557
Yang Li

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は、今日のブラウザで動作するようなものに変換するためのビルドステップ(transpilers)を必要としません。

  • 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をOld JavaScript ES5に変換する最も人気のあるトランスパイラーです。

  • BabelJSは、今日の次世代のJavaScriptを書くことを可能にします(ES2015を意味します)。

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

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

TypeScriptとCoffeeScript:

  • どちらもES5の上位に構文糖を提供し、その後ES5準拠のJavaScriptに変換されます。

  • TypeScriptまたはCoffeeScriptを書くと、transpilerがそれをES5 JavaScriptに変換します。

136
Mahmoud Zalt

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

その後、これらすべてのエンジンは表面上ECMAScriptを実装していますが、JavaScript(名前)は伝統的な命名の理由と、Mozillaによるさまざまな非標準拡張(実際には「バージョン管理」を可能にしたい)の両方の目的で使用されます。 )

42
olliej

JavaScript = ECMAScript + DOM API ;

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

  • DOM APIはHTML / XML文書(例えばdocument.getElementById('id');)と通信することを可能にする。

JavaScriptの命名の歴史:

Mocha►LiveScript►JavaScript►(JSの一部になりました)ECMA-262►ECMAScript►JavaScript(ECMAScript + DOM APIで構成されています)

33
jerone

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

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

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

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

JavaScript = ECMAScript + DOM API。

DOM APIはdocument.getElementById('id');のようなものです

他の言語ではECMAScript規格を使っていますか?

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

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

  • JavascriptはもともとNetscapeで作成されたもので、彼らは言語を標準化したいと考えていました。それで、彼らは言語をE uropean C omputer M anufacturer's Aに投稿しました。標準化のための= ssociation(ECMA)。
  • しかし、Javascriptという名前の商標の問題があり、この規格はECMAScriptと呼ばれるようになりました。これは今日でもその名前が付いている名前です。
  • 商標の問題から、Microsoftのバージョンの言語はJScriptと呼ばれています。JScriptは、その根本的にはJavascriptと同じ言語です。
26
Imran

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

16
canen

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

1990年代には、netscapeのjavascript、Microsoftのjsスクリプトなど、さまざまなバージョンのjsが登場し始めました。そのため、ecmascriptが標準として導入されました。しかしecmascriptは、javascriptのコア構文、型、オブジェクトなどを指定するjavascriptの一部しか形成していません。おそらくこれは、diff全体でのjavascriptの矛盾した実装を説明しています。ブラウザ

リファレンス - Wrox(Web開発者のためのプロフェッショナルジャバスクリプト)

11
depz123

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

10
Rethna

JavaScript ECMAScript言語です。

ECMAScript 必ずしもそうとは限らない JavaScript。

9
ryansstack

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

重要な点は、ECMAScriptは裸の抽象言語であり、ドメイン固有の拡張機能がないため、それ自体は役に立ちません。 specification は言語とその中心的な目的のみを定義します。

JavaScript、ActionScript、およびその他の方言では、ドメイン固有のライブラリが追加されているので、それを意味のあるものに使用できます。

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

7
Calmarius

Javascriptは元の名前で、Javaの人気を利用するためのものです。 ECMAは、最終的に導入された標準を監督する標準化団体であるため、名前はほぼ同等です。

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

5
Jeremy Huiskamp

ECMAScriptJavaScriptの標準です。MDNのステートメントを見てください。

enter image description here

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 2015と呼ばれるECMAScriptの6番目のメジャーバージョンを発行し、最初はECMAScript 6またはES 6と呼ばれていました。それ以来、ECMAScript標準は毎年リリースサイクルになっています。この文書は最新のドラフト版を指しており、現在はECMAScript 2018です。

詳しくは こちら をご覧ください。

3
Alireza

これが私の調査結果です。

JavaScript:David Flanaganによって書かれたDefinitive Guide には、非常に簡潔な説明があります。

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

A Microsoftのブログ投稿 は、Flanaganが説明していることと一致するようです。

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

.. this reference post(やはりMicrosoftによる)でのすべてのJavaScriptECMASCriptに置き換えなければならないと思います。実際には、 this でのみ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には page があり、ECMAScriptとJavaScriptの違いを説明しています。

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

まとめ

私の理解すると、人々はコアECMAScript仕様を参照するためにやや寛大にWord JavaScriptを使用します。

私は、現代のすべてのJavaScript実装(またはJavaScriptエンジン)は実際にはECMAScript実装であると言えます。たとえば、Googleの V8 Engine の定義を確認してください。

V8は、C++で書かれたGoogleのオープンソースの高性能JavaScriptエンジンで、Google Chrome、Googleのオープンソースブラウザ、そしてNode.jsなどで使用されています。 ECMA-262で規定されているようにECMAScriptを実装しています。

彼らはWordのJavaScriptとECMAScriptを同じ意味で使っているようですが、実際にはECMAScriptエンジンであると言えるでしょうか。

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

2
Koray Tugay

「JavaScript」という名前がSunによって所有されているという事実にならない限り、「ECMAScript」という単語を使用することは疑いようがありません。すべての意図と目的のために、言語はJavaScriptです。あなたはECMAScriptの本を探して本屋に行かないのですか?

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

2
Nosredna

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

ECMAスクリプト標準の周囲に形成されているもう1つの一般的な言語は、Adobe Flash/Flexで使用されるActionScriptです。

1
JAL