ECMAScript 2015 (第 6 版) は、ECMAScript 言語標準仕様の現行バージョンです。一般的に "ES6" として参照され、Firefox や他の Mozilla アプリケーションで使用されているエンジンの SpiderMonkey における JavaScript 実装のための標準仕様を定義しています。
"ES.next" または "harmony" のコードネームで呼称され、ECMAScript 5.1 を基にした最初のワーキングドラフトは、2011 年 7 月 12 日に "ES.next" として公開されました。2014 年 8 月に ECMAScript 6 仕様草案の機能追加が凍結され安定化とバグ修正の期間に入りました。最終的に、ECMA General Assembly によって ECMA-262 Edition 6 が公式に承認され、2015 年 6 月 17 日に標準仕様として発行されました。これは、国際工業規格の ISO/IEC 16262:2016 としても発行されます。
標準仕様の PDF および HTML バージョンが ecma-international.org サイトで無料ダウンロード できます。
ECMAScript 標準仕様へのフィードバックチャンネルは es-discuss です。
Firefox で既にサポートされている機能
以下の機能は Firefox に実装済みです。 () 内のバージョンは、その機能のサポートが追加されたバージョンを示しています。
標準ライブラリ
Array
オブジェクトの追加機能
for...of
によるArray
のイテレーション (Firefox 13)Array.from()
(Firefox 32)Array.of()
(Firefox 25)Array.prototype.fill()
(Firefox 31)Array.prototype.find()
,Array.prototype.findIndex()
(Firefox 25)Array.prototype.entries()
,
Array.prototype.keys()
(Firefox 28)Array.prototype.copyWithin()
(Firefox 32)get Array[@@species]
(Firefox 48)
新規オブジェクト Map
、Set
、 WeakMap
、WeakSet
Map
(Firefox 13)for...of
によるMap
のイテレーション (Firefox 17)Map.prototype.forEach()
(Firefox 25)Map.prototype.entries()
,
Map.prototype.keys()
,
Map.prototype.values()
(Firefox 20)- コンストラクタの引数:
new
(Firefox 37)Map
(null) - モンキーパッチを適用した
set()
をコンストラクタでサポート (Firefox 37) get Map[@@species]
(Firefox 41)
Set
(Firefox 13)for...of
によるSet
のイテレーション (Firefox 17)Set.prototype.forEach()
(Firefox 25)Set.prototype.entries()
,
Set.prototype.keys()
,
Set.prototype.values()
(Firefox 24)- コンストラクタの引数:
new
(Firefox 37)Set
(null) - モンキーパッチを適用した
add()
をコンストラクタでサポート (Firefox 37) get Set[@@species]
(Firefox 41)
WeakMap
(Firefox 6)WeakMap.clear()
(Firefox 20)WeakMap
コンストラクタの省略可能な引数 iterable (Firefox 36)- コンストラクタの引数:
new
(Firefox 37)WeakMap
(null) - モンキーパッチを適用した
set()
をコンストラクタでサポート (Firefox 37)
WeakSet
(Firefox 34)- コンストラクタの引数:
new
(Firefox 37)WeakSet
(null) - モンキーパッチを適用した
add()
をコンストラクタでサポート (Firefox 37)
- コンストラクタの引数:
Math
の新たな関数
Math.imul()
(Firefox 20)Math.clz32()
(Firefox 31)Math.fround()
(Firefox 26)Math.log10()
,Math.log2()
,Math.log1p()
,Math.expm1()
,Math.cosh()
,Math.sinh()
,Math.tanh()
,Math.acosh()
,Math.asinh()
,Math.atanh()
,Math.hypot()
,Math.trunc()
,Math.sign()
,Math.cbrt()
(Firefox 25)
Number
オブジェクトの新機能
Number.isNaN()
(Firefox 16)Number.isFinite()
(Firefox 16)Number.isInteger()
(Firefox 16)Number.parseInt()
(Firefox 25)Number.parseFloat()
(Firefox 25)Number.EPSILON
(Firefox 25)Number.MAX_SAFE_INTEGER
,Number.MIN_SAFE_INTEGER
(Firefox 31)Number.isSafeInteger()
(Firefox 32)
Object
オブジェクトの新機能
Object.prototype.__proto__
が標準化されましたObject.is()
(Firefox 22)Object.setPrototypeOf()
(Firefox 31)Object.assign()
(Firefox 34)Object.getOwnPropertySymbols()
(Firefox 33)
Date
オブジェクトの新機能
Date.prototype
は通常のオブジェクトです (Firefox 41)- generic
Date.prototype.toString
(Firefox 41) Date.prototype[@@toPrimitive]
(Firefox 44)
新オブジェクト Promise
Promise
(Firefox 24、Firefox 29 から既定で有効)
新オブジェクト Proxy
Proxy
(Firefox 18)preventExtensions()
トラップ (Firefox 22)isExtensible()
トラップ (Firefox 31)getPrototypeOf()
,setPrototypeOf()
トラップ (Firefox 49)
RegExp
オブジェクトの新機能
RegExp
のスティッキーフラグ (y) (Firefox 38)- generic
RegExp.prototype.toString
(Firefox 39) RegExp.prototype[@@match]()
(Firefox 49)RegExp.prototype[@@replace]()
(Firefox 49)RegExp.prototype[@@search]()
(Firefox 49)RegExp.prototype[@@split]()
(Firefox 49)get RegExp[@@species]
(Firefox 49)
String
オブジェクトの新機能
String.fromCodePoint()
(Firefox 29)String.prototype.codePointAt()
(Firefox 29)String.prototype.startsWith()
,String.prototype.endsWith()
(Firefox 17)String.prototype.includes()
(Firefox 40) (formerlyString.prototype.contains()
(Firefox 17))String.prototype.repeat()
(Firefox 24)String.prototype.normalize()
(Firefox 31)String.raw()
(Firefox 34)- u{XXXXXX} Unicode コードポイント (Firefox 40)
新オブジェクト Symbol
Symbol
(Firefox 36)Symbol.iterator
(Firefox 36)Symbol.for()
- グローバル Symbol レジストリ (Firefox 36)Symbol.match
(Firefox 40)Symbol.species
(Firefox 41)Symbol.toPrimitive
(Firefox 44)Symbol.prototype[@@toPrimitive]
(Firefox 44)Symbol.replace
(Firefox 49)Symbol.search
(Firefox 49)Symbol.split
(Firefox 49)Symbol.hasInstance
(Firefox 50)
型付き配列
型付き配列は ECMAScript 6 の一部として規定され、独自の仕様書を持つものではなくなりました。
ArrayBuffer
get ArrayBuffer[@@species]
(Firefox 48)DataView
Int8Array
Uint8Array
Uint8ClampedArray
Int16Array
Uint16Array
Int32Array
Uint32Array
Float32Array
Float64Array
get %TypedArray%[@@species]
(Firefox 48)
式と演算子
- new.target (Firefox 41)
- 配列の Spread 演算子 (Firefox 16)
Symbol.iterator
プロパティを使用 (Firefox 36)
- 関数呼び出しの Spread 演算子 (Firefox 27)
Symbol.iterator
プロパティを使用 (Firefox 36)
文
for...of
(Firefox 13).iterator()
および.next()
として動作 (Firefox 17)"@@iterator"
プロパティを使用 (Firefox 27)Symbol.iterator
プロパティを使用 (Firefox 36)
関数
- レスト引数 (Firefox 15)
- デフォルト引数 (Firefox 15)
- デフォルト引数の後のデフォルト値の無い引数 (Firefox 26)
- デフォルト引数の割り当てで破壊された引数 (Firefox 41)
- アロー関数 (Firefox 22)
Generator function
(Firefox 26)
その他の機能
- 2 進数および 8 進数の整数リテラル (Firefox 25)
- テンプレート文字列 (Firefox 34)
- オブジェクト初期化子: プロパティ名の短縮記法 (Firefox 33)
- オブジェクト初期化子: 計算されたプロパティ名 (Firefox 34)
- オブジェクト初期化子: メソッド名の短縮記法 (Firefox 34)
ES6 仕様に従っていない機能
以下の機能は (部分的に) Firefox に実装されていますが、ES6 仕様に従っていない機能です。これらには、2 つの理由があります。Firefox の実装が ES6 仕様の古い草案を基にしているか、Firefox の現在の実装が、ES6 仕様に追加される前の似たような実験的な設計になっていることです。
- 旧来のイテレータとジェネレータ (JS 1.7, Firefox 2)
- 分割代入 (JS 1.7, Firefox 2) (ES6 準拠は バグ 1055984)
const
(JS 1.5, Firefox 1.0) ( Firefox 51 で ES6 準拠 バグ 950547)let
(JS 1.7, Firefox 2) (Firefox 51 で ES6 準拠 バグ 950547)