【发布时间】:2018-09-13 01:57:06
【问题描述】:
以下摘录参考ECMAScript 2017。
10.1 源文本、语法
转义序列,如\u000A,不会被解释为行终止符(即新行):
在字符串文字、正则表达式文字、模板文字和 标识符,任何 Unicode 代码点也可以使用 显式表达代码点的 Unicode 转义序列 数值。在评论中,这样的转义序列是 作为评论的一部分被有效地忽略了。
ECMAScript 在行为上与 Java 编程语言不同 Unicode 转义序列。
如果 Unicode 转义序列 \u000A 出现在 Java 程序中的字符串文字中,它被解释为 行终止符,不允许在字符串文字中使用。
一个 Unicode 转义序列出现在一个字符串文字中 ECMAScript 程序,总是对字面量有贡献,并且是从不 解释为行终止符或代码点,可能 终止字符串文字。
11.8.4 字符串文字
代码点可能会在字符串文字中显示为转义序列,但反斜线 (\) 除外。
字符串文字是包含在 单引号或双引号。 Unicode代码点也可以表示 通过转义序列。 所有代码点都可能以字面形式出现在 字符串文字,除了结束引号代码点 U+005C (REVERSE SOLIDUS), U+000D (回车), U+2028 (行分隔符), U+2029(段落分隔符)和 U+000A(换行符)。 任何代码点 可能以转义序列的形式出现。
问题
- 如果不允许
\(11.8.4),如何在字符串文字中出现转义序列? - 11.8.4。指出代码点可以表示为转义序列。 10.1 声明字符串文字内的转义序列
\u000A不会被解释为line terminator。这两个似乎是矛盾的。如果它没有被解释为字符串文字中的换行符,那么它是如何解释的(如果有的话)?
【问题讨论】:
标签: javascript ecmascript-6 ecmascript-2017 ecma