ECMAScript 2019

JavaScriptバージョン番号

古いJSバージョンは数字で命名されています:ES5 (2009) と ES6 (2015)。

2016年から、バージョンは年によって命名されています:ECMAScript 2016、2017、2018、2019、...

ES2019の新しい機能:

警告

これらの機能は比較的新しいです。

古いブラウザでは、代替コード(Polyfill)が必要かもしれません

JavaScript 字符列メソッド trimStart()

ES2019でJavaScriptにStringメソッドが追加されました trimStart()

trimStart() このメソッドの動作は trim() 同様に、ただし文字列の先頭のスペースのみを削除します。

インスタンス

let text1 = "     Hello World!     ";
let text2 = text1.trimStart();

実際に試してみる

2020年1月以降、すべての現代ブラウザがJavaScript String trimStart()をサポートしています:

Chrome Edge Firefox Safari Opera
Chrome 66 Edge 79 Firefox 61 Safari 12 Opera 50
2018年4月 2020年1月 2018年6月 2018年9月 2018年5月

JavaScript 字符列メソッド trimEnd()

ES2019 は JavaScript に追加しました trimEnd() 文字列メソッドと同じです。

trimEnd() このメソッドの動作は trim() 同様に、ただし文字列の末尾のスペースのみを削除します。

インスタンス

let text1 = "     Hello World!     ";
let text2 = text1.trimEnd();

実際に試してみる

2020年1月以降、すべての現代ブラウザが JavaScript String trimEnd() をサポートしています:

Chrome Edge Firefox Safari Opera
Chrome 66 Edge 79 Firefox 61 Safari 12 Opera 50
2018年4月 2020年1月 2018年6月 2018年9月 2018年5月

JavaScript オブジェクトメソッド fromEntries()

ES2019 は JavaScript に追加しました fromEntries() オブジェクトメソッド。

fromEntries() メソッドは可迭代的キー/値ペアからオブジェクトを作成します。

インスタンス

const fruits = [
["apples", 300],
["pears", 900],
["bananas", 500]
];
const myObj = Object.fromEntries(fruits);

実際に試してみる

2020年1月以降、すべての現代ブラウザが JavaScript Object fromEntries() をサポートしています:

Chrome Edge Firefox Safari Opera
Chrome 73 Edge 79 Firefox 63 Safari 12.1 Opera 60
2019年3月 2020年1月 2018年10月 2019年3月 2019年4月

オプションの catch バインド

ES2019から、必要でない場合は、catch パラメータを省略できます:

インスタンス

2019年以前:

try {
// code
}
// code
}

2019年後:

try {
// code
}
// code
}

2020年1月以降、すべての現代ブラウザがオプションの catch バインディングをサポートしています:

Chrome Edge Firefox Safari Opera
Chrome 66 Edge 79 Firefox 58 Safari 11.1 Opera 53
2018年4月 2020年1月 2018年1月 2018年3月 2018年5月

JavaScript 配列メソッド flat()

ES2019 は JavaScript に追加しました flat() 配列メソッド。

flat() メソッドはネストされた配列を展開して新しい配列を作成します。

インスタンス

const myArr = [[1,2],[3,4],[5,6]];
const newArr = myArr.flat();

実際に試してみる

2020年1月以降、すべての現代ブラウザが JavaScript Array flat() をサポートしています:

Chrome Edge Firefox Safari Opera
Chrome 69 Edge 79 Firefox 62 Safari 12 Opera 56
2018年9月 2020年1月 2018年9月 2018年9月 2018年9月

JavaScript 配列メソッド flatMap()

ES2019 は JavaScript に追加しました flatMap() 配列メソッド。

flatMap() 方法最初は配列のすべての要素をマッピングし、新しい配列を作成するために配列を展開します。

インスタンス

const myArr = [1, 2, 3, 4, 5, 6];
const newArr = myArr.flatMap((x) => x * 2);

実際に試してみる

安定した配列メソッド sort()

ES2019 修正Array sort() メソッド

2019 年以前、規格は不安定なソートアルゴリズム、例えば QuickSort を許可していました。

ES2019 以后、ブラウザは安定したソートアルゴリズムを使用しなければなりません:

値に基づいて要素をソートする場合、これらの要素は同じ値を持つ他の要素との相対位置を保たなければなりません。

インスタンス

const myArr = [
  {name:"X00",price:100 },
  {name:"X01",price:100 },
  {name:"X02",price:100 },
  {name:"X03",price:100 },
  {name:"X04",price:110 },
  {name:"X05",price:110 },
  {name:"X06",price:110 },
  {name:"X07",price:110 }
];

実際に試してみる

上記の例では、価格でソートされた場合、以下のように他の相対位置の名前が結果に表示されることは許可されていません:

X01 100
X03 100
X00 100
X03 100
X05 110
X04 110
X06 110
X07 110

修正された JSON.stringify()

ES2019 修正JSONのstringify()メソッド

2019 年以前、JSON はエスケープコードを使用した文字に対して文字列化できませんでした。

インスタンス

let text = JSON.stringify("\u26D4");

実際に試してみる

ES2019 以前、UTF-8 コードポイント(U+D800 から U+DFFF)で JSON.stringify() を使用すると、破損した Unicode 文字、例えば ��� が返されます。

この改訂後、UTF-8 コードポイントを持つ文字列は JSON.stringify() で安全に変換され、JSON.parse() で元の文字列に復元できます。

区切り記号

文字列リテラルでは現在、行区切り記号および段落区切り記号(\u2028 および \u2029)。

2019 年以前、これらは行終端記号とされ、エラーエキシプションを引き起こしていました:

インスタンス

// これは ES2019 では有効です:
let text = "\u2028";

実際に試してみる

注意

今や、JavaScript と JSON は同じルールを持っています。

ES2019 以前:

text = JSON.parse('"\u2028"') は '' に解析されます。

text = '"\u2028"' は返します文法エラー

修正された Function toString()

ES2019 修正Function toString() メソッドについて。

toString() メソッドは関数のソースコードを表す文字列を返します。

2019年から、toString()は関数のソースコードを含む必要があります(コメント、スペース、文法詳細を含む)。

2019年以前、異なるブラウザは異なる関数のバージョンを返していました(例えば、コメントやスペースがありません)。2019年から、この関数は書き込み方が完全に返されるべきです。

インスタンス

function myFunction(p1, p2) {
  return p1 * p2;
}

実際に試してみる