奇怪的行为,地图,parseInt

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

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

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

评估为

[10, NaN, 2, 3, 4]

有人可以解释这种行为吗? 我用铬和萤火虫对它进行了验证

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

正确地返回一个10的数组作为整数。 这是不恰当的使用map(),parseInt的错误还是其他?


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

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

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

...使用三个参数调用回调:元素的值,元素的索引和正在遍历的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:

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

parseInt()有两个参数。 值和基数。 这意味着parseInt()函数正在被意外的参数调用。

链接地址: http://www.djcxy.com/p/72263.html

上一篇: Strange behavior for Map, parseInt

下一篇: Is there a work around for invalid octal digit in an array?