奇怪的行为为地图,parseInt

可能重复:
javascript – Array.map和parseInt

我在twitter上看到了这个奇怪的JavaScript行为的例子

['10','10','10','10','10'].map(parseInt) 

评估

 [10, NaN, 2, 3, 4] 

有人可以解释这种行为吗? 我用铬和萤火虫来validation它

 ['10','10','10','10','10'].map(function(x){return parseInt(x);}) 

正确地返回一个10的数组作为整数。 这是不正确的使用map(),parseInt的bug还是别的?

parseInt接收两个参数:string和radix:

var intValue = parseInt(string[, radix]);

map处理程序的第二个参数是索引:

…使用三个参数调用callback:元素的值,元素的索引和被遍历的Array对象。

parseInt使用map传入的前两个参数,并使用第二个参数指定基数。

以下是代码中发生的事情:

 parseInt('10', 0) // 10 parseInt('10', 1) // NaN parseInt('10', 2) // 2 parseInt('10', 3) // 3 parseInt('10', 4) // 4 

以下是parseInt上的MDN链接: https : //developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/parseInt 。

来自MDN:

使用三个参数调用callback:元素的值,元素的索引和被遍历的Array对象。

parseInt()有两个参数。 值和基数。 这意味着parseInt()函数被调用的意想不到的参数。