26. ES6におけるUnicode
目次
この書籍をサポートしてください: 購入する (PDF, EPUB, MOBI) または 寄付する
(広告です。ブロックしないでください。)

26. ES6におけるUnicode

この章では、ECMAScript 6がもたらすUnicodeの改善されたサポートについて説明します。Unicodeの一般的な概要については、「Speaking JavaScript」の「UnicodeとJavaScript」の章をお読みください。



26.1 ES6ではUnicodeのサポートが強化されている

ECMAScript 6では、Unicodeのサポートが次の3つの領域で改善されています。

さらに、ES6はUnicodeバージョン5.1.0に基づいていますが、ES5はUnicodeバージョン3.0に基づいています。

26.2 ES6におけるエスケープシーケンス

JavaScriptで文字を表すための、パラメータ化されたエスケープシーケンスが3つあります。

UnicodeコードポイントエスケープはES6の新機能です。これにより、16ビットを超えるコードポイントを指定できます。ECMAScript 5でこれを行う場合は、各コードポイントを2つのUTF-16コードユニット (サロゲートペア) としてエンコードする必要がありました。これらのコードユニットは、Unicodeエスケープを使用して表現できます。たとえば、次のステートメントは、ほとんどのコンソールにロケット (コードポイント0x1F680) を出力します。

console.log('\uD83D\uDE80');

Unicodeコードポイントエスケープを使用すると、16ビットを超えるコードポイントを直接指定できます。

console.log('\u{1F680}');

26.2.1 エスケープシーケンスはどこで使用できるか?

エスケープシーケンスは、次の場所で使うことができます。

  \uHHHH \u{···} \xHH
識別子  
文字列リテラル
テンプレートリテラル
正規表現リテラル フラグ /u が設定されている場合のみ

識別子

> const hello = 123;
> hell\u{6F}
123

文字列リテラル

テンプレートリテラル

> `hell\u{6F}` // cooked
'hello'
> String.raw`hell\u{6F}` // raw
'hell\\u{6F}'

正規表現

26.2.2 ES6仕様におけるエスケープシーケンス

さまざまな情報

26.2.2.1 正規表現

仕様では、BMPパターン (フラグ /u が設定されていない) とUnicodeパターン (フラグ /u が設定されている) を区別しています。「パターンのセマンティクス」セクションでは、それらがどのように異なって処理されるかについて説明しています。

参考までに、仕様で文法規則がパラメータ化される方法を以下に示します。

このパラメータ化は、「パターン」セクションで確認できます。ここで、添え字 [U] はBMPパターンとUnicodeパターンのための個別の文法を作成します。

CharacterEscape」セクションでは、さまざまなエスケープシーケンスが*文字* (おおまかに: コードユニットまたはコードポイント) に変換される方法について説明しています。

次: 27. 末尾呼び出しの最適化