JavaScript と ECMAScript の違い

php中世界最好的语言
php中世界最好的语言オリジナル
2017-11-17 10:16:491893ブラウズ

JavaScript と ECMAScript の関係は何ですか? と多くの人が尋ねてきました。以前はそれらの間に違いはありましたか?今回はそんなJavaScriptとECMAScriptについて詳しく解説していきます。

Baidu で「JavaScript と ECMAScript の違い」を検索してみました

結局、得られた膨大な混乱と矛盾した結果に完全に失望しました。

「ECMAScript は "

" JavaScript です。」 「

」 JavaScript は ECMAScript 標準の実装です。 「

」 ECMAScript は言語です。 「JavaScript は ECMAScript です。」

「ECMAScript は JavaScript です。」

泣くな。私は自分を奮い立たせて、苦痛ではあるが実りある研究を行うことにしました。

この記事は、JavaScript と ECMAScript の違いについての私の現在の理解を表しています。この記事は、JavaScript に精通しているが、それが ECMAScript、Web ブラウザ、Babel などとどのように関連するのかをより明確に理解したい人を対象としています。さらに、スクリプト言語、JavaScript エンジン、JavaScript ランタイムについても学習します。

それでは、元気を出してください。

JavaScript/ECMAScript 用語集

以下は、一貫性と明確さを重視して設計された一連の定義です。定義は完全に完了していません。これらは、JavaScript と ECMAScript の間の接続と関係を高レベルで示すように設計されています。

さっそく始めましょう。

Ecma International

科学とテクノロジーの標準を設定する組織。

「標準的な」例 (Ecma が発明したものではありませんが) を示すために、これまで使用してきたキーボードを使用してみましょう。ほとんどの文字、スペースバー、Enter キー、矢印キー、および一番上の行の数字が同じ順序になっていますか?これは、ほとんどのキーボード メーカーが QWERTY レイアウト標準に基づいてキーボード設計を行っているためです。

ECMA-262 これは、Ecma International によって発行された規格です。これには、汎用スクリプト言語の仕様が含まれています。 ECMA-262 は QWERTY に似た規格ですが、キーボード層の仕様を提示する代わりに、ECMAScript と呼ばれるスクリプト言語の仕様を提示します。 ECMA-262 は ECMAScript の参照番号であると考えてください。

スクリプト言語

既存のエンティティまたはシステム上で動作するために特別に設計されたプログラミング言語。

プログラミング言語をスクリプト言語にする方法の一般的なアイデアとして、「歩く」、「走る」、「ジャンプ」というコマンドを考えてみましょう。これらの行動には、人、犬、ビデオゲームのキャラクターなど、行動を動かす何かが必要です。 「歩く」「走る」「ジャンプ」は、これらのコマンドを実行するオペレーターがいないと意味がありません。この一連の操作は、外部エンティティの操作に重点を置いたスクリプト言語に似ています。

ECMAScript

ECMA-262 で定義された仕様は、汎用スクリプト言語を作成するための標準です。


同義語: ECMAScript 仕様

ただし、ECMA-262 はスクリプト言語仕様 ECMAScript を表す標準の名前です。

ECMAScript は、スクリプト言語が準拠する必要があるルール、詳細、ガイドラインを提供します。これらは、ECMAScript に準拠しているとみなされるための基準です。

JavaScript

ECMAScript 仕様に準拠した汎用スクリプト言語。


これは ECMAScript 言語のフォークされたバージョンです。

JavaScript は、私がプログラミングするのが好きなコーヒー風味の言語です (Java ファミリーを指します、翻訳者の注記)。 ECMAScript は、そのベースとなる仕様です。 ECMAScript 仕様を読むと、スクリプト言語の作成方法がわかります。 JavaScript のドキュメントを読むと、スクリプト言語の使用方法がわかります。

人々が JavaScript を「ECMAScript 言語の方言」と呼ぶとき、それは英語、フランス語、または中国語の方言について話すときと同じことを意味します。方言は語彙や文法の大部分を母国語から得ていますが、これらの違いを保持する価値があるほど逸脱しています。

JavaScript は、ECMA-262 で説明されている ECMAScript 仕様のほとんどを実装していますが、いくつかの違いがあります。 Mozilla は、JavaScript の非 ECMAScript 言語機能の概要をここで説明します。


JavaScript エンジン JavaScript コードを理解して実行できるプログラムまたはインタープリター。

同義語: JavaScript インタープリター、JavaScript 実装

JavaScript エンジンは、Chrome の V8、Firefox の SpiderMonkey、Edge の Chakra などの Web ブラウザーでよく見られます。各エンジンはアプリケーションの言語モジュールのようなもので、JavaScript 言語の特定のフォークをサポートできます。

JavaScript エンジンは、ブラウザにとって人間が理解できる言語です。改めて私たちの日常の行動における「歩く」「走る」「跳ぶ」を例に挙げると、その動作の意味を真に理解するための基本的な仕組みがJavaScriptエンジンです。

この比喩は、ブラウザについて説明するのに役立ちます:

ブラウザのパフォーマンスの違い

2 人が「ジャンプ」コマンドを認識する可能性がありますが、1 人は他の人よりも早くコマンドを理解し、処理するため、他の人よりも早くコマンドに応答する可能性があります。同様に、どちらのブラウザも JavaScript コードを理解しますが、一方のブラウザの方が JavaScript エンジンがより効率的に実装されているため、より高速に実行されます。

ブラウザのサポートの違い 別の例として、同じ言語を話す人々の間でも違いがあります。多くの人が英語を話せても、他の人が知らない特定の単語、表現、文法規則を知っている人もいますし、その逆も同様です。ブラウザについても同様です。すべてのブラウザー JavaScript エンジンは JavaScript を理解しますが、一部のブラウザーは他のブラウザーよりも JavaScript をよく理解します。この違いは、ブラウザの JavaScript サポートにあります。

ブラウザのサポートに関しては、JavaScript エンジンが JavaScript を解析して実行する場合でも、人々は通常、「JavaScript の互換性」ではなく「ECMAScript の互換性」について話します。この質問は少し複雑ですが、次の表で説明できます。

覚えていると思いますが、ECMAScript はスクリプト言語がどのようなものかを決定する仕様です。新しい ECMAScript バージョンのリリースは、既存のすべての JavaScript エンジンにこれらの新機能が突然搭載されることを意味するものではありません。それは、その JavaScript エンジンを担当するグループまたは組織が最新の ECMAScript 仕様に更新し、それによってもたらされる変更を採用したいかどうかによって異なります。


そのため、開発者は、「このブラウザはどのバージョンの ECMAScript をサポートしていますか?」または「このブラウザはどのような ECMAScript 機能をサポートしていますか?」などの質問をする傾向があります。 V8、SpiderMonkey、Chakra などのブラウザの JavaScript エンジンには、最新の ECMAScript 機能が搭載されています。


ECMASCript 互換性リストは、このような質問に対する答えとして非常に役立ちます。

ECMAScript の新しいバージョンがリリースされた場合、JavaScript エンジンはすべての更新を一度に統合しません。 ECMAScript 機能は段階的に追加されますが、これは Firefox の JavaScript 変更記録から明らかです。

JavaScript ランタイム

JavaScript コードが実行され、JavaScript エンジンによって解釈される環境。ランタイムは、JavaScript が実行および操作できるホスト オブジェクトを提供します。

同義語: ホスト環境 JavaScript ランタイムは、スクリプト言語の定義で言及されている「既存のエンティティまたはシステム」です。コードは JavaScript エンジンを介して渡され、解析されて理解されると、エンティティまたはシステムは解釈された動作を実行します。犬が歩き、人間が走り、ビデオゲームのミッションがジャンプします(または上の例のように破壊します)。アプリケーションは、実行時に「ホスト オブジェクト」を提供することで、それ自体を JavaScript スクリプトで利用できるようになります。クライアントの場合、JavaScript ランタイムは Web ブラウザーにすることができ、その場合、ウィンドウや HTML ドキュメントなどのホスト オブジェクトを操作に使用できます。ウィンドウまたはドキュメント ホスティング オブジェクトを使用したことがありますか?ビュー オブジェクトとドキュメント オブジェクトは、実際にはコア JavaScript 言語の一部ではありません。これらは Web API であり、JavaScript ホスティング環境として機能するブラウザによって提供されるオブジェクトです。サーバー側の JavaScript ランタイムは Node.js です。ファイル システム、処理、リクエストなどのサーバー関連のホスティング オブジェクトは Node.js で提供されます。興味深い点は、異なる JavaScript ランタイムが同じ JavaScript エンジンを共有できることです。たとえば、V8 は、Google Chrome と Node.js という 2 つのまったく異なる環境の両方で使用される JavaScript エンジンです。

ECMAScript 6

これは ECMA-262 標準の 6 番目のバージョンであり、ECMAScript 仕様に大幅な変更と改善が加えられています。

同義語: ES6、ES2015、ECMAScript 2015

このバージョンの ECMAScript は、ECMAScript を年に 1 回リリースするという Ecma International の決定により、名前が ES6 から ES2015 に変更されました。これに応じて、Ecma International も、毎年リリースされる ECMAScript 仕様に基づいて、ECMAScript 仕様の新しいバージョンに名前を付け始めました。つまり、ES6 と ES2015 は同じものの 2 つの異なる名前です。

Babel

ES6 コードを ES5 コードに変換できるトランスパイラー。

開発者は ES6 の派手な新機能を活用できますが、Web アプリケーションのブラウザ間の互換性の問題を心配しています。この記事の執筆時点では、Edge と Internet Explorer は ES6 仕様の機能を完全にはサポートしていません。

懸念のある開発者は、Bable を使用して、ES6 コードを同じ機能を持つ、ただし ES5 の機能を使用するバージョンに変換できます。すべての主要なブラウザは ES5 を完全にサポートしているため、問題を心配することなくコードを実行できます。

興味深い逸話

JavaScript と ECMAScript に関するこの情報がお役に立てば幸いです。最後に、私のような初心者 Web 開発者を啓発する情報をもう少し共有したいと思います。

鶏が先か、卵が先か

JavaScript は 1996 年に開発されたため、複雑な歴史があります。その後、1997 年に標準化作業のために ECMA International に提出され、これが ECMAScript の誕生につながりました。同時に、JavaScript は ECMAScript 仕様に準拠しているため、ECMAScript に従って実装された例であるとも言えます。

私たちにとって興味深いのは、ECMAScript は JavaScript に基づいており、JavaScript も ECMAScript に基づいているということです。

わかりました、これは人がタイムトラベルして自分の両親になるように聞こえることはわかります。少し矛盾していますが、それでも考えてみるとかなり面白いです。

結論

この記事を読んでたくさんの喜びを感じたことはわかっていますが、それでも非常に有益です。また別れを言わなければなりません。

ご質問、コメント、提案、検討事項がございましたら、お知らせください。

読んでいただきありがとうございます!

関連する推奨事項:

JavaScriptのトップに戻るコードとコメントの説明

ドロップダウンメニューのJavaScript実装の例

ECMAScriptの基礎知識_JavaScriptスキル

以上がJavaScript と ECMAScript の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。