刚刚在Chrome中测试过:
"\054321"
在控制台中输入给出:
",321"
显然"\054"
已转换为","
,但我未能在specification中找到相关规则。
我正在寻找这条规则的正式规范。 为什么"\054"
会产生","
?
更新:这是OctalEscapeSequence
,B 1.2中定义。
答案 0 :(得分:5)
如果查看ascii table,您会发现八进制值054
(十进制:44)是一个逗号。
您可以在指定的Values, variables, and literals - JavaScript | MDN页面上找到更多信息:
表2.1 JavaScript特殊字符
字符 含义
XXX
具有Latin-1编码的字符,在XXX
和0
之间由最多三个八进制数377
指定。例如,\251
是版权符号的八进制序列。
基本上,如果你使用3位数的转义码,它将被评估为八进制值。
那就是说,请注意,八进制转义符是deprecated in ES5(这些已从此版本的ECMAScript 中删除),您应该使用十六进制或unicode转义码({{1} }或\XX
)。
如果您希望使用文字字符串\uXXXX
,则只需使用双反斜杠:\012345
。
答案 1 :(得分:2)
, 的十月代码为 054 。
选中此Ascii Table
为什么你必须在10月代码之前加上“\”?
通过快速搜索,您将找到许多解决方案。但是这个给了我一个更好的澄清。
八进制转义序列
任何字符代码低于256的字符(即扩展ASCII范围内的任何字符)都可以使用前缀为的八进制编码字符代码进行转义。 (请注意,这是可以通过十六进制转义转义的相同字符范围。) 要使用相同的示例,版权符号('©')具有字符代码169,它以八进制表示法给出251,因此您可以将其写为'\ 251'。
[上半部分来自一篇 here的文章
您可以从该文章中找到一些例外情况。
答案 2 :(得分:0)
因为在字符串中使用\,就像在其他语言(如C或Python)中一样,意味着一个特殊字符,例如\ r \ n作为回车符或\ n作为换行符。在这种情况下,它是昏迷的ascii值,即054。
答案 3 :(得分:0)
" \ 054"是","的八进制数。见这里:http://www.asciitable.com/index/asciifull.gif