はじめに

ECMAScript6は、ECMAScript2015としても知られており、ECMAScript標準の最新バージョンです。 ES6は言語に対する重要な更新であり、ES5は2009年に標準化されて以来、言語に対する最初の更新です。 主要なJavaScriptエンジンでのこれらの機能の実装は現在進行中です。

ECMAScript6言語の完全な仕様については、ES6標準を参照してください。,

ES6には、次の新機能が含まれています。

  • 矢印
  • クラス
  • 拡張オブジェクトリテラル
  • テンプレート文字列
  • 構造化
  • default+rest+spread
  • let+const
  • イテレータ+for。.,モジュールローダー
  • map+set+weakmap+weakset
  • プロキシ
  • シンボル
  • サブクラス可能な組み込み
  • promises
  • 数学+数値+文字列+配列+オブジェクトApi
  • バイナリおよびオクタルリテラル
  • api

  • テールコール

ecmascript6の機能

矢印

矢印は、=>構文を使用した関数の省略形です。 これらは、c#、Java8、CoffeeScriptの関連機能と構文的に似ています。, これらは、ステートメントブロック本体と、式の値を返す式本体の両方をサポートします。 関数とは異なり、矢印は周囲のコードと同じ字句thisを共有します。

詳細情報:MDN矢印関数

クラス

ES6クラスは、プロトタイプベースのOOパターンに対する単純な砂糖です。 単一の便利な宣言形式を持つことは、クラスパターンを使いやすくし、相互運用性を促進します。 授業支援の試作に基づく継承、スーパー、インスタンスは、staticメソッドは、コンストラクタ.,

詳細情報:MDNクラス

拡張オブジェクトリテラル

オブジェクトリテラルは、構築時のプロトタイプの設定、foo: foo割り当て、メソッドの定義、スーパーコール、式によるプロパティ名の計算をサポートするように拡張されています。 これらはまた、オブジェクトリテラルとクラス宣言をより緊密にし、オブジェクトベースの設計は同じ便利さのいくつかから利益を得ることが,

詳細情報:MDN文法と型:オブジェクトリテラル

テンプレート文字列

テンプレート文字列は、文字列を構築するための構文的な砂糖を提供します。 これは、Perl、Pythonなどの文字列補間機能に似ています。 オプションとして、タグを追加して、文字列構成をカスタマイズし、注入攻撃を回避したり、文字列の内容からより高いレベルのデータ構造を構築したり

詳細情報:MDNテンプレート文字列

デストラクチャリング

デストラクチャリングでは、配列とオブジェクトのマッチングをサポートして、パターンマッチ, デストラクチャリングは、標準のオブジェクト検索fooと同様にフェイルソフトで、見つからないときにundefined値を生成します。

詳細情報:MDN構造化割り当て

Default+Rest+Spread

呼び出し先が評価した既定のパラメーター値。 関数呼び出しで配列を連続した引数に変換します。 結合する最後のパラメータを配列に格納します。 Restはargumentsの必要性を置き換え、より直接的に一般的なケースに対処します。,

function f(x, y=12) { // y is 12 if not passed (or passed as undefined) return x + y;}f(3) == 15
function f(x, ...y) { // y is an Array return x * y.length;}f(3, "hello", true) == 6
function f(x, y, z) { return x + y + z;}// Pass each elem of array as argumentf(...) == 6

More MDN info: Default parameters, Rest parameters, Spread Operator

Let + Const

Block-scoped binding constructs. let is the new var. const is single-assignment. Static restrictions prevent use before assignment.

function f() { { let x; { // okay, block scoped name const x = "sneaky"; // error, const x = "foo"; } // error, already declared in block let x = "inner"; }}

More MDN info: let statement, const statement

Iterators + For..,/H3>

イテレータオブジェクトは、CLR IEnumerableやJava Iterableなどのカスタム反復を有効にします。 for..infor..ofを使用したカスタムイテレータベースの反復に一般化します。 配列を実現する必要はなく、LINQのような遅延デザインパターンを有効にします。

反復は、これらのダック型のインターフェイスに基づいています(説明のためのTypeScript型構文のみを使用)。

詳細情報:MDN for。..p>

ジェネレータ

ジェネレータは、function*およびyieldを使用して反復子オーサリングを簡素化します。, Function*として宣言された関数は、Generatorインスタンスを返します。 ジェネレータは、追加のnextおよびthrowを含むイテレータのサブタイプです。 これらにより、値がジェネレータに戻ることができるため、yieldは値を返す(またはスローする)式形式です。注:非同期プログラミングのように’await’を有効にするために使用することもできます。ES7await提案も参照してください。,

ジェネレータインタフェースは(博覧会のみにTypeScript型構文を使用しています):

interface Generator extends Iterator { next(value?: any): IteratorResult; throw(exception: any);}

詳細情報:MDN反復プロトコル

Unicode

文字列内の新しいUnicodeリテラル形式や新しいRegExpuコードポイントを処理するモードを含む、完全なUnicodeをサポートするための非破壊追加、およびコードポイントを処理するためのモード、およびコードポイントを処理するためのモード、およびコードポイントを処理するためのモードを含む。21bitコードポイントレベルで文字列を処理するための新しいapi。 これらの追加支援ーパーグローバルハイスクールはアプリです。

詳細情報:MDN RegExp。プロトタイプ。,unicode

Modules

コンポーネント定義用のモジュールの言語レベルのサポート。 一般的なJavaScriptモジュールローダー(AMD、CommonJS)からのパターンを成文化します。 ホスト定義のdefault loaderによって定義された実行時の動作。 暗黙のうちに非同期モデル–バーコードを実行するまでに要請モジュールをお使いいただけ処理します。,v>

いくつかの追加機能が含まれますexport defaultexport *

// lib/mathplusplus.jsexport * from "lib/math";export var e = 2.71828182846;export default function(x) { return Math.log(x);}
// app.jsimport ln, {pi, e} from "lib/mathplusplus";alert("2π = " + ln(e)*pi*2);

より多くのMDN情報:インポートステートメント、エクスポートステートメント

モジュールローダー

モジュールローダーのサポート:

  • 動的ローディング
  • 状態分離
  • グローバル名前空間分離
  • コンパイルフック
  • ネストされた仮想化

デフォルトのモジュールローダーを構成でき、新しいローダーを構築して、分離されたコンテキストまたは制約付きコンテキストでコードを評価およびロードすることができます。,

Map+Set+WeakMap+WeakSet

一般的なアルゴリズムのための効率的なデータ構造。 WeakMapsを提供で漏れのないオブジェクト-キーのい側です。

その他のMDN情報:Map、Set、WeakMap、WeakSet

プロキシ

プロキシは、ホストオブジェクトで利用可能な全範囲の動作を持つオブジェクトの作成を可能にします。 傍受、オブジェクトの仮想化、ロギング/プロファイリングなどに使用できます。

すべてのランタイムレベルのメタ操作に使用できるトラップがあります。

詳細情報:MDN Proxy

Symbols

Symbolsはオブジェクト状態のアクセス制御を有効にします。, シンボルを使用すると、プロパティをstring(ES5のように)またはsymbolのいずれかによってキー設定できます。 Symbolsは新しいプリミティブ型です。 オプションのdescriptionデバッグで使用されるパラメーター-ただし、idの一部ではありません。 シンボルは(gensymのように)一意ですが、Object.getOwnPropertySymbolsようなリフレクション機能を介して公開されるため、非公開ではありません。

詳細情報:MDNシンボル

サブクラス可能なビルトイン

ES6では、ArrayDate、DOMElementのようなビルトインをサブクラス化することができます。,

Ctorという名前の関数のオブジェクト構築は、Ctor呼び出しCtorオブジェクトを割り当て、特別な動作をインストールします

  • 新しいインスタンスにコンストラクタを呼び出して
  • 既知の@@createシンボルは、Symbol.createで使用できます。 組み込みは、@@createを明示的に公開します。,

    数学+数値+文字列+配列+オブジェクトApi

    コア数学ライブラリ、配列変換ヘルパー、文字列ヘルパー、およびオブジェクトを含む多くの新しいライブラリコピーに割り当てます。

    より多くのMDN情報:数値、数学、配列。から、配列。の,配列.プロトタイプ。コピーウィズイン、オブジェクトassign

    バイナリとオクタルリテラル

    バイナリ(b)とオクタル(o)に二つの新しい数値リテラル形式が追加されました。

    0b111110111 === 503 // true0o767 === 503 // true

    Promises

    Promisesは非同期プログラミング用のライブラリです。, Promiseは、将来利用可能になる可能性のある値のファーストクラスの表現です。 Promiseは多くの既存のJavaScriptライブラリで使用されます。

    詳細情報:MDN Promise

    Reflect API

    オブジェクトに対するランタイムレベルのメタ操作を公開するフルリフレクションAPI。 これは事実上プロキシAPIの逆であり、プロキシトラップと同じメタ操作に対応する呼び出しを行うことができます。 プロキシの実装に特に便利です。,

    // No sample yet

    詳細情報:MDNリフレクト

    テールコール

    テール位置の呼び出しは、スタックを無限に拡大しないことが保証されています。 無制限の入力に直面しても再帰的アルゴリズムを安全にします。

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です