ECMAScript 2019
JavaScriptバージョン番号
古いJSバージョンは数字で命名されています:ES5 (2009) と ES6 (2015)。
2016年から、バージョンは年によって命名されています:ECMAScript 2016、2017、2018、2019、...
ES2019の新しい機能:
- String.trimStart()
- String.trimEnd()
- Object.fromEntries
- オプションの catch バインド
- Array.flat()
- Array.flatMap()
- 再編集されたArray.Sort()
- 修正された JSON.stringify()
- 文字列リテラルに許可された区切り文字
- 再編集されたFunction.toString()
警告
これらの機能は比較的新しいです。
古いブラウザでは、代替コード(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; }