有人可以解释我为什么
["23", "45", "67"].map(parseInt);
返回[ 23, NaN, NaN ]
但是
["23", "45", "67"].map((e) => parseInt(e));
返回[ 23, 45, 67 ]
?
答案 0 :(得分:3)
["23", "45", "67"].map(parseInt)
基本上是:
["23", "45", "67"].map((e, i) => parseInt(e, i))
所以,它在内部。
i
是0
。因此parseInt('23', 0) // 23
i
是1
。因此parseInt('45', 1) // NaN
i
是2
。因此,parseInt('67', 2) // NaN
在此["23", "45", "67"].map((e) => parseInt(e));
中,默认radix
为10
。因此,它会给您返回[23, 45, 67]
。
阅读MDN Guide可以了解为什么在这种情况下默认选择radix
作为10
。