奇怪的行为,地图,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()
函数正在被意外的参数调用。
上一篇: Strange behavior for Map, parseInt
下一篇: Is there a work around for invalid octal digit in an array?