为什么调用parseInt(['1', '2', '3'])会返回1?

3
parseInt([1,2,3])
1
parseInt([[1,2,3]])
1
parseInt([[['101',2,3]]], 2)
5

已在Chrome12、Firefox3.6、IE6和IE8中进行了测试。


1
根据 Mozilla 文档,我认为你不应该传递数组作为参数,第一个参数应该是一个字符串。 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/parseInt - user456814
1
为什么要将数组解析为整数?!? - mkilmanas
4个回答

5

parseInt将在你的数组混乱中获取第一个合理的东西 - 在这种情况下,那就是'101'

然后,

>>> parseInt(101, 2)
5

Because 1012 = 510


正如其他人所提到的,这个问题的一个重要方面是 parseInt(object) 转换为字符串的方式。这一点非常重要,因为这是它能够使用 101 的原因。但我认为 @clyfish 感到困惑的是基数和二进制解析。 - Chris Morgan

5

因为[1,2,3].toString()会返回1,2,3,所以前两行代码会得到一个1。当parseInt()遇到NaN时,就会停止寻找数字值,而在这种情况下,逗号,NaN,所以它在那里停止解析并返回到目前为止找到的任何数字。


4
那是因为parseInt期望的是一个字符串作为第一个参数,如果没有提供字符串,则会将其转换为字符串。 parseInt([1,2,3])相当于parseInt([1,2,3].toString()),即parseInt("1,2,3")
其他情况同理。

0

它会取数组中的第一个值,然后使用基数值将该值转换为int

parseInt([50,2,3])
将返回50

parseInt([[['101',2,3]]], 2)

返回5,因为第一个元素101基于2是整数5基于10


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