26. Unicode 在 ES6 中
目錄
請支持這本書:購買(PDF、EPUB、MOBI)捐款
(廣告,請不要封鎖。)

26. Unicode 在 ES6 中

本章說明 ECMAScript 6 帶來的 Unicode 支援改進。如要了解 Unicode 的一般介紹,請閱讀「Speaking JavaScript」中的第 24 章「Unicode 和 JavaScript」。



26.1 ES6 中的 Unicode 支援更佳

ECMAScript 6 在三個領域改進了對 Unicode 的支援

此外,ES6 基於 Unicode 版本 5.1.0,而 ES5 基於 Unicode 版本 3.0。

26.2 ES6 中的跳脫序列

JavaScript 中有三個參數化跳脫序列,用於表示字元

Unicode 碼位跳脫在 ES6 中是新的。它們讓您可以指定超過 16 位元的碼位。如果您要在 ECMAScript 5 中執行此操作,您必須將每個碼位編碼為兩個 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 模式建立了不同的文法。

字元跳脫」章節說明了各種跳脫序列如何轉換為字元(大致上:碼單元或碼點)。

下一篇:27. 尾呼叫最佳化