ホームページ >ウェブフロントエンド >jsチュートリアル >ES6(ES2015)およびそれ以降:JavaScriptバージョンの理解

ES6(ES2015)およびそれ以降:JavaScriptバージョンの理解

William Shakespeare
William Shakespeareオリジナル
2025-02-15 12:13:11230ブラウズ

ES6 (ES2015) and Beyond: Understanding JavaScript Versioning

近年、JavaScriptの開発が急増しています。新しいECMAScriptの仕様は毎年リリースされており、JavaScriptバージョン管理、各バージョンの機能サポート、および将来指向のコードを作成する方法が混乱しています。

この一見継続的な更新の波の背後にある理由をよりよく理解するために、JavaScriptとそのバージョンの歴史を簡単に確認し、標準化プロセスが非常に重要な理由を理解しましょう。

キーポイント

    ES6(ES2015とも呼ばれます)は、JavaScriptバージョン管理の大きな変化を示しており、クラス、約束、矢印関数、ESモジュール、ジェネレーター、反復器などの機能を導入しています。これは、将来の毎年恒例の小さなJavaScriptバージョンの更新の基礎を築く重要な基盤の更新です。
  • ES2015は、新しい言語機能の議論と採用のための提案ベースのTC39プロセスを確立します。このプロセスは、ストローマン(序文)、提案(提案)、ドラフト(ドラフト)、候補者(候補者)、および終了(完成)の5つの段階で構成されています。
  • ES2015の後、その後のバージョンは毎年6月にリリースされ、ES2016(ES7)とES2017(ES8)は増分機能と改善を導入します。 ES2018は、非同期イテレーターやオブジェクトの拡張や残差特性などの強力な新機能を紹介します。
  • リリース年を反映してバージョン番号を削除するために、ES6をES6に変更しました。この動きは、混乱を避け、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リリース管理をサポートする巨大で必要な礎石です。今日の多くの開発者が非常に愛している多くの機能が含まれています。

カテゴリ
  • 約束
  • 矢印関数
  • esモジュール
  • ジェネレーターとiterator
  • ES2015は、言語機能を議論および採用するための提案ベースのモデルである
TC39プロセス

に従う最初のバージョンです。

tc39プロセス

提案が今後のECMAScriptバージョンに受け入れられる前に、5段階を経る必要があります。

ステージ0:Strawman(序文)

これは、仕様にアイデアを提出できる便利なステップです。誰でも特集の提案をすることができます。

ステージ1:提案(提案)

提案の正式化の最初の段階。マスト:

このソリューションで修正された既存の問題を説明してください
  • APIの概要と、高度な実装の詳細、およびポリフィルやデモンストレーション
  • を提供します
  • 事前に潜在的な障害を議論します
  • 提案を採用および前進させるために、担当者を選択する必要があります。この人はTC39メンバーでなければなりません。

ステージ2:ドラフト(ドラフト) これは、この機能が将来のECMAScriptリリースに含まれる可能性があるマイルストーンです。ここでは、提案の構文とセマンティクスは、仕様で説明されている正式な言語を使用して詳細に説明されています。現時点では、実験的な実装を提供する必要があります。

ステージ3:候補者(候補者)

ここでは、提案のコンテンツとサポート技術のほとんどが開発されましたが、ユーザーや実装者(ブラウザーメーカーなど)からのさらなるフィードバックが開発されています。取得してアクションが取られると、要約と仕様の詳細は、指定されたレビュアーと指定された編集者によって最終決定され、署名されます。この段階では一貫した実装が必要なため、その後、重大な変更のみが受け入れられます。

ステージ4:終了(完了)

この提案は受け入れられており、ecmascriptに追加できます。したがって、それは本質的に:

    JavaScriptに記載されている
  • TEST262スイートの一部の受容テストは、機能のコンプライアンスと動作を実証するために書かれています
  • 少なくとも2つの準拠の実装が利用可能でリリースされています。これらはすべて、その堅牢性と開発者の可用性を証明しています
  • プル要求は、公式のECMA-262コードベースに提出され、仕様編集によって署名されました。
上記のコードベースの貢献ドキュメントでは、GitHubの問題の使用と、言語の追加を管理するためのリクエストをプルする詳細について詳しく説明します。

楽しみにしています

es2016

ES7としても知られている

これは、ECMAScriptの最初の小さい増分バージョンです。バグの修正に加えて、2つの機能を追加します。

array.prototype.includes

この例方法により、配列内の値を検索する操作が簡素化されます。

指数演算子

<code class="language-javascript">// ES2016 之前:
const hasBob = names.indexOf('bob') > -1;

// ES2016:
const hasBob = names.includes('bob');</code>
ES2016の前に、Math.Pow(ベース、指数)を使用して指数操作を実行できます。このバージョンでは、独自の優先度を持っているオペレーター(**)を紹介します:

es2017

<code class="language-javascript">// ES2016 之前
Math.pow(5, 3); // => 125

// ES2016
5 ** 3; // => 125</code>
ES2017(別名ES8)は、いくつかの便利な方法と構文構造を含むわずかに大きなバージョンです。

Async function

約束はコールバック地獄から私たちを救い出しましたが、彼らのAPIはまだ冗長性を示しています。非同期関数は、同期コードに非常に似た同期コードを使用してそれらを抽象化します。

文字列充填方法

string.prototype.padstart(長さ、パッダー)とパデンド(長さ、パッダー)は、長さの文字に達するまで、文字列の最初と端(これはオプション、デフォルトはスペースにデフォルト)に繰り返しパッダーを追加します。
<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())が含まれます。

es2018

<code class="language-javascript">'foo'.padStart(6);          // => '   foo';
'foo'.padEnd(6);            // => 'foo   ';
'foo'.padStart(10, 'bar');  // => 'barbarbfoo';
'foo'.padEnd(10, 'bar');    // => 'foobarbarb';</code>
執筆時点で、この最新リリースは少数の強力な新機能を紹介しています。

async iterator

promise.all()を使用すると、複数の約束の解析を待つことができますが、場合によっては、非同期に取得された値を反復する必要がある場合があります。これで、プロミスアレイを備えた非同期イテレーターを待つことができます:

<code class="language-javascript">// ES2016 之前:
const hasBob = names.indexOf('bob') > -1;

// ES2016:
const hasBob = names.includes('bob');</code>

オブジェクトの展開と残りのプロパティ

表面的には、これらの2つの構文の改善は、Babelなどのコンパイラが利用可能であるため、JavaScript開発者の間で人気があります。オブジェクトの拡張と残差プロパティは、アレイの拡張と残差プロパティに似ており、オブジェクトプロパティの浅いコピーとグループ化の分解を可能にします:

<code class="language-javascript">// ES2016 之前
Math.pow(5, 3); // => 125

// ES2016
5 ** 3; // => 125</code>

その他の受け入れられた提案には、promise.prototype.finally()、および正規表現とテンプレートリテラルの拡張が含まれます。

結論

JavaScriptは非常に短い期間で大幅に発達しました。これは、ECMAScript標準とTC39の優れた仕事によるものですが、以前のJavaScriptバージョンの管理と開発の安定性と凝集の欠如により、当初は困難な旅でした。

提案プロセスは比較的成熟しているため、言語は実用的で制御可能な方法でのみ改善できます。これはWeb開発者にとって素晴らしい時間です!

JavaScriptバージョン管理に関する

FAQ:ES6およびES2015

ES6とES2015の主な違いは何ですか?

ES6とES2015は本質的に同じです。 ES6は、ECMAによって国際的に標準化されたECMAScriptプログラミング言語の第6版です。 ES2015はES6の新しい名前であり、リリースされた年を反映しています。改名は、リリース年を反映し、バージョン番号を取り除くことを目的としています。これは混乱する可能性があります。

es6をES2015に変更する理由

リリース年を反映してバージョン番号を削除するために、ES6をES6に変更しました。この動きは、混乱を避け、JavaScriptが絶えず更新され改善されている動的言語であることを示すことです。新しい命名規則も、言語の更新と改善の規則性を示すのに役立ちます。

ES6/ES2015に導入された重要な機能は何ですか?

ES6/ES2015は、さまざまな宣言、より短い関数構文の矢印関数、文字列補間のテンプレートリテラル、オブジェクト指向プログラミングクラスのテンプレートリテラル、非同期プログラミングの約束など、JavaScriptの多くの新機能を紹介します。コード組織のモジュールなど。 let constES6/ES2015 JavaScriptエンコーディングを改善する方法は?

ES6/ES2015は、さまざまな方法でJavaScriptエンコードを改善します。言語をより強力で使いやすくする新しい構文と機能を紹介します。たとえば、矢印関数は機能書き込みにクリーンな構文を提供しますが、Promiseは非同期操作の処理を容易にします。モジュールの導入は、コードの整理を改善し、管理と保守を容易にするのにも役立ちます。

JavaScriptコードでES6/ES2015機能を使用して開始する方法は?

JavaScriptコードのES6/ES2015機能を開始するには、ES6コードを現在のブラウザで実行できるES5コードに変換するBabelなどの翻訳者を使用できます。 Webpackなどのモジュールパッカーを使用して、JavaScriptモジュールを管理およびバンドルすることもできます。

ES6/ES2015と互換性の問題はありますか?

ES6/ES2015の機能のほとんどは、ほとんどの最新のブラウザでサポートされていますが、古いブラウザには互換性の問題がある場合があります。互換性を確保するために、ブラウザからネイティブサポートを期待する機能を提供するPolyFillを使用できます。

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

javascriptは、もともとNetscapeによって開発されたプログラミング言語です。 ECMAScriptは、ECMAによって国際的に標準化されたJavaScript標準バージョンです。 JavaScriptはECMAScriptを実装します。これは、ECMAScript標準で定義されているルールと構造に従うことを意味します。

ES6/ES2015後のJavaScriptの未来は何ですか?

TypeScriptとES6/ES2015の関係は何ですか?

TypeScriptは、言語に静的タイプを追加するJavaScriptのスーパーセットです。 ES6/ES2015のすべての機能、さらにはJavaScriptにはない追加機能をサポートしています。タイプスクリプトコードはJavaScriptに翻訳されるため、JavaScript環境で実行できます。

JavaScriptの以前のバージョンを使用するよりも、ES6/ES2015を使用することの利点は何ですか?

ES6/ES2015を使用すると、以前のバージョンのJavaScriptと比較して多くの利点があります。言語をより強力で使いやすくする新しい構文と機能を紹介します。また、コードの組織と保守性を向上させ、複雑なアプリケーションと大規模なコードベースをより適切にサポートします。

以上がES6(ES2015)およびそれ以降:JavaScriptバージョンの理解の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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