我遇到了一个关于 JS 中数组映射函数的问题,无法解释为什么会发生这种情况,也没有找到任何有用的搜索结果和解释。对不起,如果这已经张贴在某处。
谁能解释为什么结果不同?
const [ i, j ] = "1x2".split('x').map((value) => parseInt(value));
console.log(i);
console.log(j);
const [ i, j ] = "1x2".split('x').map(parseInt);
console.log(i);
console.log(j);
干杯
答案 0 :(得分:2)
parseInt
接收 radix
作为第二个参数:
radix
可选
一个介于 2 和 36 之间的整数,表示字符串的基数(数学数字系统中的基数)。小心——这不会默认为 10!如果基数值不是数字类型,它将被强制转换为数字。
所以,当你这样做时:
const [ i, j ] = "1x2".split('x').map(parseInt);
就像:
const [ i, j ] = "1x2".split('x').map((value, index) => parseInt(value, index));
(使用 map
、currentValue
和 currentIndex
调用 arrayReference
回调)
因此,parseInt("2", 1)
是 NaN
,因为 1
不是有效的 radix
值。