以下摘录参考ECMAScript 2017。
10.1 源文本,语法
转义序列,如\u000A
,不会被解释为行终止符(即新行):
在字符串文字、正则表达式文字、模板文字和标识符中,任何 Unicode 代码点也可以使用明确表达代码点数值的 Unicode 转义序列来表达。在评论中,这样的转义序列作为评论的一部分被有效地忽略了。
ECMAScript 与 Java 编程语言的不同之处在于 Unicode 转义序列的行为。
如果 Unicode 转义序列 \u000A 出现在 Java 程序中的字符串文字中,则将其解释为行终止符,这在字符串文字中是不允许的。
在 ECMAScript 程序中的字符串文字中出现的 Unicode 转义序列总是对文字有贡献,并且永远不会被解释为行终止符或可能终止字符串文字的代码点。
11.8.4 字符串文字
代码点可能会在字符串文字中显示为转义序列,但反斜线 ( \
) 除外。
字符串文字是用单引号或双引号括起来的零个或多个 Unicode 代码点。Unicode 代码点也可以由转义序列表示。除了结束引号代码点 U+005C (REVERSE SOLIDUS)、 U+000D (CARRIAGE RETURN)、 U+2028 (LINE SEPARATOR)、 U+2029 (PARAGRAPH SEPARATOR)、和 U+000A(线路馈送)。任何代码点都可能以转义序列的形式出现。
问题
\
如果不允许(11.8.4),如何在字符串文字中出现转义序列?- 11.8.4。指出代码点可以表示为转义序列。10.1 规定
\u000A
字符串文字内的转义序列不会被解释为line terminator
. 这两个似乎是矛盾的。如果它没有被解释为字符串文字内的换行符,那么它是如何解释的(如果有的话)?