Es6-es9-newfeatures
ES9-新機能
ここでは、ES9の新機能について学びます。 非同期ジェネレータについて理解することから始めましょう。
非同期ジェネレーターと反復
例
次の例は、ジェネレータの* next()*メソッドを呼び出すたびにPromiseを返す非同期ジェネレータを示しています。
上記のコードの出力は次のようになります-
ループを待つ
非同期反復可能オブジェクトは、promiseを返すため、従来の* for..ofループ*構文を使用して反復することはできません。 ES9では*非同期ループ*をサポートする for await of loop が導入されています。
- 各反復で、異なるプロパティの値が variable に割り当てられ、変数はconst、let、またはvarで宣言できます。
- iterable -反復可能なプロパティが反復されるオブジェクト。
例
次の例は、for await of loopを使用して非同期ジェネレーターを反復処理する方法を示しています。
上記のコードの出力は以下のようになります-
例
次の例では、for await ofループを使用して配列を反復しています。
上記のコードの出力は次のようになります-
レスト/スプレッドプロパティ
ES9は、オブジェクトでのRestおよびSpreadオペレーターの使用をサポートしています。
例:オブジェクトおよびレストオペレーター
次の例は、オブジェクトでのRESTオペレーターの使用を示しています。 学生の年齢プロパティの値は年齢変数にコピーされ、残りのプロパティの値は残りの構文 `…`を使用して他の変数にコピーされます。
上記のコードの出力は以下のようになります-
例:オブジェクトおよびスプレッド演算子
スプレッド演算子を使用して、複数のオブジェクトを結合したり、オブジェクトを複製したりできます。 これは、次の例に示されています-
上記のコードの出力は以下のようになります-
約束:いよいよ()
- finally()は、その結果に関係なく、promiseが解決されるたびに実行されます。 この関数はpromiseを返します。 これは、promiseの then()ハンドラーと catch()*ハンドラーの両方でコードの重複を回避するために使用できます。
構文
下記の構文は、* finally()*関数用です。
例
次の例では、3秒の遅延後に正数の2乗を返す非同期関数を宣言しています。 負の数が渡されると、関数はエラーをスローします。 finallyブロックのステートメントは、約束が拒否されたか解決されたかにかかわらず、どちらの場合でも実行されます。
上記のコードの出力は次のようになります
テンプレートリテラルリビジョン
ES7以降、タグ付きテンプレートは次のエスケープシーケンスのルールに準拠しています-
- Unicodeエスケープシーケンスは "\ u" を使用して表されます(例: \ u2764 \ uFE0F )
- Unicodeコードポイントのエスケープシーケンスは "\ u \ {}" を使用して表されます(例: \ u \ {2F} )
- 16進数のエスケープシーケンスは "\ x" を使用して表されます(例: \ xA8 )
- 8進リテラルエスケープシーケンスは ""を使用して表され、1つ以上の数字が続きます(例: \ 125 )
ES2016以前では、タグ付き関数で無効なエスケープシーケンスを使用すると、以下に示すように構文エラーがスローされます-
ただし、以前のバージョンとは異なり、ES9は無効なUnicodeシーケンスを未定義に解析し、エラーをスローしません。 これは、次の例に示されています-
上記のコードの出力は以下のようになります-
生ストリング
ES9では特別なプロパティ raw が導入され、タグ関数の最初の引数で使用できます。 このプロパティを使用すると、エスケープシーケンスを処理せずに、入力されたままの文字列にアクセスできます。
例
上記のコードの出力は次のようになります-
正規表現機能
正規表現では、ドット演算子またはピリオドを使用して単一の文字を照合します。 。 ドット演算子*は、以下の例に示すように、 *\ n、\ r のような改行文字をスキップします-
正規表現パターンは/* regular_expression/.として表されます。test()メソッドは文字列パラメーターを取り、正規表現パターンを検索します。 上記の例では、 test()メソッド*は、Tutorialsで始まり、任意の1文字が続き、Pointで終わるパターンを検索します。 チュートリアルとポイントの間の入力文字列で \ n または \ r を使用すると、test()メソッドはfalseを返します。
ES9では、* DotAllFlag(\ s)*という新しいフラグが導入されました。これをRegexで使用して、行末記号と絵文字を一致させることができます。 これは、次の例に示されています-
上記のコードの出力は以下のようになります-
名前付きキャプチャグループ
ES9以前は、キャプチャグループはインデックスによってアクセスされていました。 ES9では、キャプチャグループに名前を割り当てることができます。 同じための構文は以下のとおりです-
例
上記のコードの出力は以下のとおりです-