刚刚在Chrome中进行了测试:
"\054321"
在控制台中输入以下内容:
",321"
显然
"\054"
被转换为","
,但是我没有在specification中为此找到规则。我正在寻找此规则的正式规范。为什么
"\054"
产生","
?更新:这是B 1.2中定义的
OctalEscapeSequence
。 最佳答案
如果查看ascii table,您会发现八进制值054
(十进制:44)是逗号。
您可以在Values, variables, and literals - JavaScript | MDN页面上找到更多信息,该页面指定:
表2.1 JavaScript特殊字符
角色含义
XXX
XXX
和0
之间最多由三个八进制数字377
指定的具有Latin-1编码的字符。例如,\251
是版权符号的八进制序列。
因此,从本质上讲,如果您使用3位数的转义码,它将被评估为八进制值。
也就是说,请注意八进制转义符是deprecated in ES5(这些已从此版本的ECMAScript中删除),您应该使用十六进制或Unicode转义码(\XX
或\uXXXX
)。
如果希望使用文字字符串\012345
,则只需使用双反斜杠:\\012345
。