为什么在Javascript中0010等于8?

6
我在Chrome控制台和Firefox甚至IE中编写了以“00”开头的数字,如001到0010等等,并得到以下结果。
为什么0010不等于10? 或者为什么0020不等于20?而是等于“16”。

5
因为它是八进制。 - adeneo
为什么0010不等于10?或者为什么0020不等于20?而是等于"16"。因为这些数字是八进制的。 - christopher
2
阅读有关基数的内容。 - jbabey
@adeneo - 我觉得“八边形”更有趣 :) - Martin James
@MartinJames - 番茄、蕃茄,同样的东西,它与数字八有关! - adeneo
4个回答

8

4
"

如果数字常量以零开头,则被视为八进制;如果数字常量以0x开头,则被视为十六进制。(如此处所解释)

008不被视为八进制,因为它包含“8”,而8不是八进制数。0010实际上是一个八进制数,等于8。

"

3

Javascript中的数字字面量可以用不同的进制表示 -

前导零意味着这个数字是八进制(只包含0-7的数字),所以010等同于:1乘以8加0

字面量0x10是十六进制(基数为16),因此等于:1乘以16加0 = 16

请查看这里


3

因为前导0代表的是八进制数系统。同样地,如果你输入了0x010,它将等于16,因为0x是十六进制数系统的前缀。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接