刚刚在Chrome中进行了测试:

"\054321"


在控制台中输入以下内容:

",321"


显然"\054"被转换为",",但是我没有在specification中为此找到规则。

我正在寻找此规则的正式规范。为什么"\054"产生","

更新:这是B 1.2中定义的OctalEscapeSequence

最佳答案

如果查看ascii table,您会发现八进制值054(十进制:44)是逗号。

您可以在Values, variables, and literals - JavaScript | MDN页面上找到更多信息,该页面指定:


  表2.1 JavaScript特殊字符
  
  角色含义
  XXX XXX0之间最多由三个八进制数字377指定的具有Latin-1编码的字符。例如,\251是版权符号的八进制序列。


因此,从本质上讲,如果您使用3位数的转义码,它将被评估为八进制值。

也就是说,请注意八进制转义符是deprecated in ES5(这些已从此版本的ECMAScript中删除),您应该使用十六进制或Unicode转义码(\XX\uXXXX)。

如果希望使用文字字符串\012345,则只需使用双反斜杠:\\012345

07-28 06:07