为什么在javascript中的0010等于8?

时间:2013-04-10 12:30:53

标签: javascript google-chrome

我写的从001到0010以及更多这样的数字,在Chrome控制台和Fire Fox中以“00”开头,甚至在IE中也得到了这个结果。

为什么0010不等于10? 或为什么0020不等于20?它是“16”。

4 个答案:

答案 0 :(得分:6)

前导零表示数字应解释为八进制。

因此,解释为八进制的10等于十进制的8

有关更多信息,请参阅MDN on number literals

答案 1 :(得分:3)

Javascript中的数字文字可以在不同的基础上输入 -

前导零表示数字是八进制数字(仅数字0-7)所以010与以下相同:一次8 +零

文字0x10是十六进制(基数为16)所以等于:一次16 +零)= 16

https://developer.mozilla.org/en/docs/JavaScript/Guide/Values,_variables,_and_literals

答案 2 :(得分:3)

“如果数字常量前面有零,则它们被视为八进制,如果它们前面有零和x(0x),则被视为十六进制。” (正如here所述)

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

答案 3 :(得分:3)

因为前导0代表Octal数字系统。同样,如果您键入0x010,它将等于16,因为0x是Hexadecimal数字系统的前缀。