是' \'之后的十进制数字ECMA-262严格模式允许的字符串符号?

时间:2017-06-17 04:05:33

标签: javascript string specifications ecma262 javascript-engine

根据ECMA-262规范第6版的严格模式,单引号或双引号后的字符串是' \'可能有EscapeSequence或LineTerminatorSequence和EscapeSequence必须是以下之一:CharacterEscapeSequence,0 [lookahead∉DecimalDigit],HexEscapeSequence,UnicodeEscapeSequence(见11.8.4)。 CharacterEscapeSequence可以是SingleEscapeCharacter或NonEscapeCharacter,它不能是EscapeCharacter,而EscapeCharacter包含DecimalDigit。

问题是11.8.4.3中没有任何EscapeCharacter的SV(字符串值)的描述,它只是被称为不是NonEscapeCharacter的东西。

这是否意味着拥有一个' \'然后是DecimalDigit?或者在规范中省略这一点意味着由实现决定如何解释它?

我在不同的引擎上进行了测试,看起来V8,SpiderMonkey和Chakra都返回了SyntaxError for' \'接下来是OctalDigit,其中包含关于八进制数字文字在严格模式下不受支持的消息,并且只返回' \'之后的数字的代码点值。对于不是OctalDigits的DecimalDigits(' \ 8'和' \ 9'分别导致''''''''' / p>

我是否遗漏了规范中的内容?这种行为可以被认为是正确的吗?

0 个答案:

没有答案