为什么这两次调用map返回不同的值?

时间:2018-08-09 16:14:16

标签: javascript

有人可以解释我为什么

["23", "45", "67"].map(parseInt);返回[ 23, NaN, NaN ]

但是

["23", "45", "67"].map((e) => parseInt(e));返回[ 23, 45, 67 ]

1 个答案:

答案 0 :(得分:3)

["23", "45", "67"].map(parseInt)基本上是:

["23", "45", "67"].map((e, i) => parseInt(e, i))

所以,它在内部。

  • 对于“ 23”,i0。因此parseInt('23', 0) // 23
  • 对于“ 45”,i1。因此parseInt('45', 1) // NaN
  • 对于“ 67”,i2。因此,parseInt('67', 2) // NaN

在此["23", "45", "67"].map((e) => parseInt(e));中,默认radix10。因此,它会给您返回[23, 45, 67]

阅读MDN Guide可以了解为什么在这种情况下默认选择radix作为10