Wierd Javascript添加行为

Wierd Javascript添加行为,javascript,google-chrome,internet-explorer,binary,console,Javascript,Google Chrome,Internet Explorer,Binary,Console,为什么2+10=12和2+010=10?我在谷歌ChromeV51.0和IE8的控制台上试过这个,结果都一样。也许这就是Javascript的特性。 有人请帮助我理解它背后的逻辑,以及它可能有什么好处?0然后数字告诉javascript将数字解释为八进制。所以八进制中的10表示十进制中的8,8+2表示10。前导为0的数字被视为八进制数。这就是为什么010被解释为8,因此你得到10作为2+010的和。python也会发生这种情况。它不是二进制的,开始时的0表示八进制,八进制010==8 有时Jav

为什么2+10=12和2+010=10?我在谷歌ChromeV51.0和IE8的控制台上试过这个,结果都一样。也许这就是Javascript的特性。
有人请帮助我理解它背后的逻辑,以及它可能有什么好处?

0然后数字告诉javascript将数字解释为八进制。所以八进制中的10表示十进制中的8,8+2表示10。

前导为0的数字被视为八进制数。这就是为什么010被解释为8,因此你得到10作为2+010的和。python也会发生这种情况。

它不是二进制的,开始时的0表示八进制,八进制010==8


有时JavaScript完全按照您指定的方式处理数字,而有时它尝试“解释”数字

在本例中,JavaScript正在解释数字

前导零表示数字是八进制-以8为基数-其中数字为0、1、2、3、4、5、6、7

所以。。010八进制==8十进制

2 + 010
2 + 8
10
如果您正在处理来自外部源的数字,那么可以使用parseInt

注意:10对于强制将该数字转换为基数10也很重要。在ES3和我相信5中,不使用它可能会得到不同的结果,具体取决于浏览器。

10等于8的八进制数,第一个零告诉javascript将其解释为八进制数。因此,当执行2+010时,首先将010转换为8,然后将其添加到2中,得到10。

最好“使用strict”,否则数字前面的0表示八进制。下面是您的答案:
2 + parseInt("010", 10);