有如下代码:
["1","2","3"].map(parseInt);
执行结果是什么?
[1, NaN, NaN]
解析:
/*
parseInt(value, radix) 需要两个参数, 需要被解析的值, 基数
radix = 0, 按十进制解析
radix = 1, 解析为 NaN
一位的value, radix < value 例如 parseInt('3', 2) 3 无法被解析成二进制, 只能被解析成 NaN
上述代码的执行过程:
因为 map 会传入 三个参数 (ele, index, arr) parseInt 需要两个就会取前两个(ele, index)
parseInt('1', 0) // 按 10 进制解析
parseInt('2', 1) // 无法解析 NaN
parseInt('3', 2) // 无法解析 NaN
*/
// map 传入三个参数? 使用如下代码查看
["1", "2", "3"].map(function () {
console.log(arguments);
})
如果我非要这么做而且还能得到正确的答案, 怎么办?
["1", "2", "3"].map(function () {
return parseInt(arguments[0], 10);
})