ECMAScript 2019
JavaScriptのバージョン番号
古いJSバージョンは番号で命名されています。ES5(2009)およびES6(2015)。
2016年から、バージョンは年ごとに名前が付けられます:ECMAScript2016、2017、2018、2019、...
ES2019の新機能
- String.trimStart()
- String.trimEnd()
- Object.fromEntries
- オプションのキャッチバインディング
- Array.フラット()
- Array.flatMap()
- Array.Sort()の改訂
- JSON.stringify()の改訂
- 文字列リテラルで使用できる区切り記号
- Function.toString()の改訂
警告
これらの機能は比較的新しいものです。
古いブラウザでは、代替コード(Polyfill)が必要になる場合があります
JavaScript文字列trimStart()
ES2019では、JavaScriptにStringメソッドtrimStart()
が追加されました。
‘trimStart()‘ メソッドは、‘trim()‘ と同様に機能しますが、文字列の先頭からのみ空白を削除します。
JavaScript文字列trimStart()
は2020年1月以降、すべてのブラウザーでサポートされています。
Chrome66 | Edge79 | Firefox61 | Safari12 | Opera50 |
2018年4月 | 2020年1月 | 2018年6月 | 2018年9月 | 2018年5月 |
JavaScript文字列trimEnd()
ES2019では、JavaScriptにStringメソッドtrimEnd()
が追加されました。
trimEnd()
メソッドは、trim()
と同様に機能しますが、文字列の末尾からのみ空白を削除します。
JavaScript文字列trimEnd()
は2020年1月以降、すべてのブラウザーでサポートされています。
Chrome66 | Edge79 | Firefox61 | Safari12 | Opera50 |
2018年4月 | 2020年1月 | 2018年6月 | 2018年9月 | 2018年5月 |
JavaScriptオブジェクトfromEntries()
ES2019では、オブジェクトメソッドfromEntries()
が JavaScriptに追加されました。
このfromEntries()
メソッドは、反復可能なキーと値のペアからオブジェクトを作成します。
例
JavaScriptオブジェクトfromEntries()
は2020年1月以降、すべてのブラウザーでサポートされています。
Chrome73 | Edge79 | Firefox 63 | Safari12.1 | Opera60 |
2019年3月 | 2020年1月 | 2018年10月 | 2019年3月 | 2019年4月 |
オプションのcatchバインディング
ES2019から、不要な場合はcatchパラメーターを省略できます。
例
2019年以前
2019年以降
オプションのcatchバインディングは、2020年1月以降、すべてのブラウザーでサポートされています。
Chrome66 | Edge79 | Firefox58 | Safari11.1 | Opera53 |
2018年4月 | 2020年1月 | 2018年1月 | 2018年3月 | 2018年5月 |
JavaScript配列flat()
ES2019では、JavaScriptにArray flat()
メソッドが追加されました。
このflat()
メソッドは、ネストされた配列をフラット化することで新しい配列を作成します。
JavaScript配列flat()
は2020年1月以降、すべてのブラウザーでサポートされています。
Chrome69 | Edge79 | Firefox62 | Safari12 | Opera56 |
2018年9月 | 2020年1月 | 2018年9月 | 2018年9月 | 2018年9月 |
JavaScript配列flatMap()
ES2019では、JavaScript にArrayflatMap()
メソッドが追加されました。
このflatMap()
メソッドは、まず配列のすべての要素をマップし、次に配列をフラット化して新しい配列を作成します。
Stable Array sort()
ES2019ではArray sort()
メソッドが改訂されました。
2019年より前の仕様では、QuickSortなどの不安定な並べ替えアルゴリズムが許可されていました。
ES2019以降、ブラウザーは安定した並べ替えアルゴリズムを使用する必要があります。
要素を値で並べ替える場合、要素は同じ値を持つ他の要素との相対位置を維持する必要があります。
例
上記の例では、価格に基づいて並べ替える場合、次のように、名前が他の相対位置にある結果が得られることは許可されません。
JSON.stringify()の改訂
ES2019では、JSON stringify()
メソッドが改訂されました。
2019年より前は、JSONは \ でエンコードされた文字を文字列化できませんでした。
例
let text = JSON.stringify("\u26D4");ES2019より前は、JSON.stringify()
UTF-8コード ポイント(U+D800からU+DFFF)のJSONは、���のような壊れたUnicode文字を返しました。
この改訂後、UTF-8コードポイントを持つ文字列はJSON.stringify()
を使用して安全に変換され、JSON.parse()
を使用して元に戻されます。
区切り記号
行区切り記号と段落区切り記号(\u2028および\u2029)を文字列リテラルで使用できるようになりました。
2019年より前は、これらは行末記号として扱われ、エラー例外が発生しました。
注記
現在、JavaScriptとJSONには同等のルールがあります。
ES2019より前:
text = JSON.parse('"\u2028"')は''に解析されます。
text = '"\u2028"'は構文エラー.
Revised Function toString()
ES2019ではFunctiontoString()
メソッドが改訂されました。
このtoString()
メソッドは、関数のソースコードを表す文字列を返します。
2019年から、toString()は、コメント、スペース、および構文の詳細を含む関数のソースコードを返す必要があります。
2019年より前は、さまざまなブラウザーが関数のさまざまなバリアントを返しました(コメントやスペース無しなど)。
2019 年から、関数は記述されているとおりに正確に返される必要があります。
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。