javascript - ECMAScript 2017 : Why does EscapeSequence include NonEscapeCharacter?

标签 javascript ecmascript-6 ecmascript-2017 ecma

以下摘录引用ECMAScript 2017 .

11.8.4 字符串文字,注释 1

A string literal is zero or more Unicode code points enclosed in single or double quotes. Unicode code points may also be represented by an escape sequence. .... Any code points may appear in the form of an escape sequence.

11.8.4 字符串文字,语法

非终结符EscapeSequence具有以下词法语法产生式:

EscapeSequence ::
    CharacterEscapeSequence
    0 [lookahead ∉ DecimalDigit]
    HexEscapeSequence
    UnicodeEscapeSequence

非终结符CharacterEscapeSequence具有以下词法语法产生式:

CharacterEscapeSequence ::
    SingleEscapeCharacter
    NonEscapeCharacter

11.8.4.3 静态语义:SV

包含如下描述:

The SV of DoubleStringCharacter :: \ EscapeSequence is the SV of the EscapeSequence

问题

  1. 注释 1 中的转义序列是什么意思?尝试理解转义序列的实际作用,而不仅仅是它的词汇语法
  2. 为什么 CharacterEscapeSequence 包含 NonEscapeCharacter
  3. 11.8.4.3 Static Semantics: SV中的描述似乎不遵循词法语法产生的正常 ECMAScript 约定。这些描述是什么意思?
  4. 添加问题:注释 1 是否声明代码点可以位于引号内,或者位于转义序列(例如反斜杠)之后?这就是任何代码点都可以以转义序列的形式出现的意思吗?

最佳答案

  1. What is meant by escape sequence in Note 1?

    EscapeSequence从你的下一个问题开始。

  2. Why does CharacterEscapeSequence include NonEscapeCharacter?

    因为无效转义符的反斜杠会被忽略 - 例如 '\c' === 'c' 。向后兼容性无法被破坏。

  3. 11.8.4.3 Static Semantics: SV contains descriptions such as “The SV of DoubleStringCharacter :: \ EscapeSequence is the SV of the EscapeSequence”. Those lines do not follow the normal ECMAScript convention for lexical grammar productions. What is meant by those descriptions?

    这意味着您应该引用EscapeSequence对应的同一节中的规则。例如,如果您有 "\x20"\x20将是一个由 \ 组成的 DoubleStringCharacter和逃生序列x20 ,这又是一个 HexEscapeSequence x HexDigit HexDigit,其 SV 为

    The SV of HexEscapeSequence :: x HexDigit HexDigit is the code unit value that is (16 times the MV of the first HexDigit) plus the MV of the second HexDigit.

关于javascript - ECMAScript 2017 : Why does EscapeSequence include NonEscapeCharacter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49604170/

相关文章:

javascript - 如何在php中获取脚本变量值

javascript - 当第二个函数完成时,使用 Promise 在函数导出中返回一个值

javascript - ES 模块中的 require.cache 等效项

node.js - 使用 async/await 在 firebase 中运行查询

javascript - 正则表达式中的否定

javascript - Rails4 - 如何通过Ajax安全地接收和发送JSON数据并存储它?

javascript - React Native TextInput setState() 问题

javascript - 为什么 ISN'T `foo: ' bar'` 是 Javascript 中的语法错误?

JavaScript async 函数,当返回 promise 在没有返回值的情况下 resolved

javascript - Babel/Rollup 错误转译和捆绑 ES2017