为什么在JavaScript中032*2=52?
我很有兴趣理解为什么为什么在JavaScript中032*2=52?,javascript,numbers,Javascript,Numbers,我很有兴趣理解为什么032*2在JavaScript中返回52 我有一种感觉,032可以作为octalnotation相互渗透,但我找不到适当的参考 请你: 请给我一个带参考资料的解释 提前感谢您在这方面的帮助。从0开始是八进制的。所以,032==26 要将其转换为基数10/十进制数,请使用基数10 来自MDN文档: 如果基数未定义或为0(或不存在),JavaScript将假定: 如果输入字符串以“0x”或“0x”开头,则基数为16(十六进制),并解析字符串的其余部分 如果输入字符串以“0”
032*2
在JavaScript中返回52
我有一种感觉,032
可以作为octalnotation
相互渗透,但我找不到适当的参考
请你:
- 请给我一个带参考资料的解释
0开始是八进制的。所以,032==26
要将其转换为基数10/十进制数,请使用基数10
来自MDN文档:
如果基数未定义或为0(或不存在),JavaScript将假定:
如果输入字符串以“0x”或“0x”开头,则基数为16(十六进制),并解析字符串的其余部分
如果输入字符串以“0”开头,则基数为8(八进制)或10(十进制)。选择哪个基数取决于具体实现。ECMAScript 5指定使用10(十进制),但并非所有浏览器都支持这一点。因此,在使用parseInt时,请始终指定基数
如果输入字符串以任何其他值开头,则基数为10(十进制)
不带基数的八进制解释
虽然ECMAScript 3不鼓励,ECMAScript 5禁止,
许多实现将以前导0开头的数字字符串解释为八进制。以下可能是八进制结果,也可能是十进制结果。
始终指定基数以避免这种不可靠的行为
来源:ECMAScript 5.1指定了数字文本的一些扩展:
7.8.3[数值文字]的语法和语义可扩展如下,但严格模式代码不允许此扩展:
NumericLiteral ::
DecimalLiteral
HexIntegerLiteral
OctalIntegerLiteral
OctalIntegerLiteral ::
0 OctalDigit
OctalIntegerLiteral OctalDigit
数字文字::
分米线
六积分法
八边
八边:
0八达吉特
八面平行八面体
由此得出结论,任何以0
开头,后跟OctalDigit
s的数字都可以被视为八进制数。但是,这在严格模式下是不允许的。哦,这很有趣。我不知道ES5禁止它。。我想每天都要学些新东西。RE:你感觉你在谷歌上搜索过八进制javascript吗?我的前三名结果都解释了这一点,MDN就是其中之一。感谢您发布相关问题/答案,但我相信我的问题不会重复。。。除解释外,我还需要链接/参考一些文档。032=(3*(8^1)+2*(8^0))=((3*8)+2*1)=(24+2)=26。因此,032*2=52要求我们推荐非现场资源的问题也与主题无关。@MartinSmith感谢您的评论,我不知道有关链接到外部资源的规则。
NumericLiteral ::
DecimalLiteral
HexIntegerLiteral
OctalIntegerLiteral
OctalIntegerLiteral ::
0 OctalDigit
OctalIntegerLiteral OctalDigit