奇怪的行为为地图,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()
函数被调用的意想不到的参数。