Map,parseInt的奇怪行为

时间:2013-01-25 18:47:38

标签: javascript functional-programming

  

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

我看到了这个奇怪的JavaScript行为示例on twitter

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

评估为

[10, NaN, 2, 3, 4]

有人可以解释这种行为吗?我在chrome和firebug中验证了它

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

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

3 个答案:

答案 0 :(得分:106)

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

  

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

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

  

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

答案 1 :(得分:36)

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

答案 2 :(得分:5)

来自MDN:

  使用三个参数调用

回调:元素的值,   元素的索引和遍历的Array对象。

parseInt()有两个参数。价值和基数。这意味着使用非预期的参数调用parseInt()函数。