26. ES6 中的 Unicode
目录
请支持本书:购买 (PDF, EPUB, MOBI)捐赠
(广告,请不要屏蔽。)

26. ES6 中的 Unicode

本章解释 ECMAScript 6 对 Unicode 的改进支持。有关 Unicode 的一般介绍,请阅读“Speaking JavaScript”中的“Unicode and 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 模式创建了单独的语法

CharacterEscape”一节解释了各种转义序列如何转换为*字符*(粗略地说:代码单元或代码点)。

下一页:27. 尾调用优化