ホームページ >ウェブフロントエンド >jsチュートリアル >ES6(ES2015)およびそれ以降:JavaScriptバージョンの理解
近年、JavaScriptの開発が急増しています。新しいECMAScriptの仕様は毎年リリースされており、JavaScriptバージョン管理、各バージョンの機能サポート、および将来指向のコードを作成する方法が混乱しています。
この一見継続的な更新の波の背後にある理由をよりよく理解するために、JavaScriptとそのバージョンの歴史を簡単に確認し、標準化プロセスが非常に重要な理由を理解しましょう。
キーポイント
JavaScriptバージョン管理の初期の歴史 JavaScriptのプロトタイプは、1995年5月にBrendan Eichによってわずか10日で書かれました。彼は当初、Netscape Navigatorのスキームランタイムを実装するために採用されましたが、管理チームはCスタイルの言語を使用して当時の新しいJavaを補完するように推進しました。
JavaScriptは、1995年12月にNetscape Navigatorバージョン2でデビューしました。翌年、MicrosoftのリバースエンジニアリングJavaScriptをリバースエンジニアリングし、JScriptと呼ばれる独自のバージョンを作成しました。 Internet Explorer Browserバージョン3でリリースされたJScriptは、JavaScriptとほぼ同じ(同じバグや癖を含めてもまったく同じ)ですが、追加のインターネットエクスプローラー固有の機能があります。
ecmascriptの誕生
JScript(およびその他のバリアント)がJavaScriptと互換性があることを確認する必要があり、NetscapeおよびSun Microsystemsが言語を標準化するように促します。彼らは、欧州コンピューターメーカー協会(ECMA)の助けを借りてこれを行いました。標準化された言語は、SunのJava商標の侵害を避けるためにECMAScriptと呼ばれます。これは、かなりの混乱を引き起こした動きです。最終的に、ECMAScriptは仕様を参照するために使用されますが、JavaScript(およびまだそうです)は言語自体を参照するために使用されます。
JavaScriptバージョンの管理とECMAScriptのメンテナンスを担当するワーキンググループは、技術委員会39、またはTC39として知られています。 Apple、Google、Microsoft、Mozillaなどのすべての主要なブラウザベンダーの代表者と、Web開発に関心のある他社の専門家や代表者を招待しています。彼らは言語の方向を決定するために定期的な会議を開催します。
1997年にJavaScriptがTC39によって標準化された場合、仕様はECMAScriptバージョン1と呼ばれていました。当初、ECMAScriptの後続のバージョンは毎年リリースされましたが、コンセンサスの欠如とECMAScript 4周辺の管理が困難な特徴の大規模なセットのために散発的になりました。そのため、バージョンは終了し、3.1に絞り込まれましたが、その名前では確定されていませんでしたが、最終的にはECMaScript 5に進化しました。 ECMAScript 3のリリースから10年後の2009年12月にリリースされ、JSONシリアル化API、function.prototype.bind、Strictモードなどの機能を導入しました。 2年後、メンテナンスバージョンがリリースされ、最新のイテレーション5.1のあいまいさを明らかにしました。
ecmascript 2015および年次リリースのリバイバル
TC39がECMAScript 4によって引き起こされる意見の相違を解決するにつれて、ブレンダン・アイヒは、より短く、より小さなリリースの必要性を強調しました。これらの新しい仕様の最初は、es2015 (元々はecmascript 6またはes6と呼ばれています)です。このリリースは、将来の年次JavaScriptリリース管理をサポートする巨大で必要な礎石です。今日の多くの開発者が非常に愛している多くの機能が含まれています。
カテゴリに従う最初のバージョンです。
tc39プロセス提案が今後のECMAScriptバージョンに受け入れられる前に、5段階を経る必要があります。
ステージ0:Strawman(序文)
ステージ1:提案(提案)
このソリューションで修正された既存の問題を説明してください
ステージ2:ドラフト(ドラフト) これは、この機能が将来のECMAScriptリリースに含まれる可能性があるマイルストーンです。ここでは、提案の構文とセマンティクスは、仕様で説明されている正式な言語を使用して詳細に説明されています。現時点では、実験的な実装を提供する必要があります。
ここでは、提案のコンテンツとサポート技術のほとんどが開発されましたが、ユーザーや実装者(ブラウザーメーカーなど)からのさらなるフィードバックが開発されています。取得してアクションが取られると、要約と仕様の詳細は、指定されたレビュアーと指定された編集者によって最終決定され、署名されます。この段階では一貫した実装が必要なため、その後、重大な変更のみが受け入れられます。
この提案は受け入れられており、ecmascriptに追加できます。したがって、それは本質的に:
楽しみにしています
es2016 array.prototype.includes 指数演算子 es2017
es2018
表面的には、これらの2つの構文の改善は、Babelなどのコンパイラが利用可能であるため、JavaScript開発者の間で人気があります。オブジェクトの拡張と残差プロパティは、アレイの拡張と残差プロパティに似ており、オブジェクトプロパティの浅いコピーとグループ化の分解を可能にします: その他の受け入れられた提案には、promise.prototype.finally()、および正規表現とテンプレートリテラルの拡張が含まれます。 結論 JavaScriptは非常に短い期間で大幅に発達しました。これは、ECMAScript標準とTC39の優れた仕事によるものですが、以前のJavaScriptバージョンの管理と開発の安定性と凝集の欠如により、当初は困難な旅でした。 提案プロセスは比較的成熟しているため、言語は実用的で制御可能な方法でのみ改善できます。これはWeb開発者にとって素晴らしい時間です! FAQ:ES6およびES2015 ES6とES2015は本質的に同じです。 ES6は、ECMAによって国際的に標準化されたECMAScriptプログラミング言語の第6版です。 ES2015はES6の新しい名前であり、リリースされた年を反映しています。改名は、リリース年を反映し、バージョン番号を取り除くことを目的としています。これは混乱する可能性があります。 リリース年を反映してバージョン番号を削除するために、ES6をES6に変更しました。この動きは、混乱を避け、JavaScriptが絶えず更新され改善されている動的言語であることを示すことです。新しい命名規則も、言語の更新と改善の規則性を示すのに役立ちます。 ES6/ES2015は、さまざまな宣言、より短い関数構文の矢印関数、文字列補間のテンプレートリテラル、オブジェクト指向プログラミングクラスのテンプレートリテラル、非同期プログラミングの約束など、JavaScriptの多くの新機能を紹介します。コード組織のモジュールなど。 JavaScriptコードでES6/ES2015機能を使用して開始する方法は?
TypeScriptとES6/ES2015の関係は何ですか? JavaScriptの以前のバージョンを使用するよりも、ES6/ES2015を使用することの利点は何ですか? これは、ECMAScriptの最初の小さい増分バージョンです。バグの修正に加えて、2つの機能を追加します。
この例方法により、配列内の値を検索する操作が簡素化されます。
<code class="language-javascript">// ES2016 之前:
const hasBob = names.indexOf('bob') > -1;
// ES2016:
const hasBob = names.includes('bob');</code>
ES2016の前に、Math.Pow(ベース、指数)を使用して指数操作を実行できます。このバージョンでは、独自の優先度を持っているオペレーター(**)を紹介します:
<code class="language-javascript">// ES2016 之前
Math.pow(5, 3); // => 125
// ES2016
5 ** 3; // => 125</code>
ES2017(別名ES8)は、いくつかの便利な方法と構文構造を含むわずかに大きなバージョンです。
Async function
文字列充填方法<code class="language-javascript">// Promise
const getProfile = name => {
return fetch(`https://some-api/people/${name}`)
.then(res => res.json())
.then(({ profile }) => profile); // 从解析的对象中解构 `profile`
};
// async/await
const getProfile = async name => {
const res = await fetch(`https://some-api/people/${name}`);
const { profile } = await res.json();
return profile;
};</code>
その他の機能には、トレーリングコンマ、共有メモリおよび原子操作、および静的オブジェクトメソッド(object.entries()、object.values()、およびobject.getownPropertyDescriptors())が含まれます。
<code class="language-javascript">'foo'.padStart(6); // => ' foo';
'foo'.padEnd(6); // => 'foo ';
'foo'.padStart(10, 'bar'); // => 'barbarbfoo';
'foo'.padEnd(10, 'bar'); // => 'foobarbarb';</code>
執筆時点で、この最新リリースは少数の強力な新機能を紹介しています。
promise.all()を使用すると、複数の約束の解析を待つことができますが、場合によっては、非同期に取得された値を反復する必要がある場合があります。これで、プロミスアレイを備えた非同期イテレーターを待つことができます:
<code class="language-javascript">// ES2016 之前:
const hasBob = names.indexOf('bob') > -1;
// ES2016:
const hasBob = names.includes('bob');</code>
オブジェクトの展開と残りのプロパティ
<code class="language-javascript">// ES2016 之前
Math.pow(5, 3); // => 125
// ES2016
5 ** 3; // => 125</code>
ES6とES2015の主な違いは何ですか?
es6をES2015に変更する理由
ES6/ES2015に導入された重要な機能は何ですか?
let
const
ES6/ES2015 JavaScriptエンコーディングを改善する方法は? ES6/ES2015は、さまざまな方法でJavaScriptエンコードを改善します。言語をより強力で使いやすくする新しい構文と機能を紹介します。たとえば、矢印関数は機能書き込みにクリーンな構文を提供しますが、Promiseは非同期操作の処理を容易にします。モジュールの導入は、コードの整理を改善し、管理と保守を容易にするのにも役立ちます。
JavaScriptコードのES6/ES2015機能を開始するには、ES6コードを現在のブラウザで実行できるES5コードに変換するBabelなどの翻訳者を使用できます。 Webpackなどのモジュールパッカーを使用して、JavaScriptモジュールを管理およびバンドルすることもできます。
ES6/ES2015と互換性の問題はありますか?
ES6/ES2015の機能のほとんどは、ほとんどの最新のブラウザでサポートされていますが、古いブラウザには互換性の問題がある場合があります。互換性を確保するために、ブラウザからネイティブサポートを期待する機能を提供するPolyFillを使用できます。
javascriptは、もともとNetscapeによって開発されたプログラミング言語です。 ECMAScriptは、ECMAによって国際的に標準化されたJavaScript標準バージョンです。 JavaScriptはECMAScriptを実装します。これは、ECMAScript標準で定義されているルールと構造に従うことを意味します。
TypeScriptは、言語に静的タイプを追加するJavaScriptのスーパーセットです。 ES6/ES2015のすべての機能、さらにはJavaScriptにはない追加機能をサポートしています。タイプスクリプトコードはJavaScriptに翻訳されるため、JavaScript環境で実行できます。
以上がES6(ES2015)およびそれ以降:JavaScriptバージョンの理解の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。