为什么“\054321”在 JavaScript 中产生“,321”?
Why does "\054321" produce ",321" in JavaScript?
刚刚在 Chrome 中测试:
"4321"
在控制台中输入给出:
",321"
显然 "4"
被转换为 ","
,但我在 specification.
中找不到相关规则
我正在寻找此规则的正式规范。 为什么"4"
会产生","
?
更新: 这是一个 OctalEscapeSequence
,如 B 1.2 中所定义。
,的Oct代码是[=32=]054.
勾选这个Ascii Table
那为什么要在那个Oct码前面加上“\”呢??
通过快速搜索,您会找到很多解决方案。但是这个给了我一个更好的澄清。
八进制转义序列
Any character with a character code lower than 256 (i.e. any character in the extended ASCII range) can be escaped using its octal-encoded character code, prefixed with . (Note that this is the same range of characters that can be escaped through hexadecimal escapes.)
To use the same example, the copyright symbol ('©') has character code 169, which gives 251 in octal notation, so you could write it as '1'.
[上面的部分是从一篇文章中收集的 here]
您还可以从该文章中找到一些例外情况。
如果您查看 ascii table,您会发现八进制值 054
(十进制:44)是一个逗号。
您可以在指定的 Values, variables, and literals - JavaScript | MDN 页面上找到更多信息:
Table 2.1 JavaScript special characters
Character Meaning
XXX
The character with the Latin-1 encoding specified by up to three octal digits XXX
between 0
and 377
. For example, 1
is the octal sequence for the copyright symbol.
所以本质上,如果您使用 3 位转义码,它将被计算为八进制值。
也就是说,请注意八进制转义是 deprecated in ES5(这些已从该版本的 ECMAScript 中删除),您应该改用十六进制或 unicode 转义码(\XX
或 \uXXXX
)。
如果您希望获得文字字符串 2345
,则只需使用双反斜杠:\012345
.
因为在字符串中使用 \,就像在 C 或 Python 等其他语言中一样,意味着一个特殊字符,例如 \r 作为回车 return 或 \n 作为换行符。在这种情况下,它是昏迷的ascii值,即054。
“\054”是八进制的“,”。看这里:http://www.asciitable.com/index/asciifull.gif
刚刚在 Chrome 中测试:
"4321"
在控制台中输入给出:
",321"
显然 "4"
被转换为 ","
,但我在 specification.
我正在寻找此规则的正式规范。 为什么"4"
会产生","
?
更新: 这是一个 OctalEscapeSequence
,如 B 1.2 中所定义。
,的Oct代码是[=32=]054.
勾选这个Ascii Table
那为什么要在那个Oct码前面加上“\”呢??
通过快速搜索,您会找到很多解决方案。但是这个给了我一个更好的澄清。
八进制转义序列
Any character with a character code lower than 256 (i.e. any character in the extended ASCII range) can be escaped using its octal-encoded character code, prefixed with . (Note that this is the same range of characters that can be escaped through hexadecimal escapes.) To use the same example, the copyright symbol ('©') has character code 169, which gives 251 in octal notation, so you could write it as '1'.
[上面的部分是从一篇文章中收集的 here]
您还可以从该文章中找到一些例外情况。
如果您查看 ascii table,您会发现八进制值 054
(十进制:44)是一个逗号。
您可以在指定的 Values, variables, and literals - JavaScript | MDN 页面上找到更多信息:
Table 2.1 JavaScript special characters
Character Meaning
XXX
The character with the Latin-1 encoding specified by up to three octal digitsXXX
between0
and377
. For example,1
is the octal sequence for the copyright symbol.
所以本质上,如果您使用 3 位转义码,它将被计算为八进制值。
也就是说,请注意八进制转义是 deprecated in ES5(这些已从该版本的 ECMAScript 中删除),您应该改用十六进制或 unicode 转义码(\XX
或 \uXXXX
)。
如果您希望获得文字字符串 2345
,则只需使用双反斜杠:\012345
.
因为在字符串中使用 \,就像在 C 或 Python 等其他语言中一样,意味着一个特殊字符,例如 \r 作为回车 return 或 \n 作为换行符。在这种情况下,它是昏迷的ascii值,即054。
“\054”是八进制的“,”。看这里:http://www.asciitable.com/index/asciifull.gif