['1', '2', '3'].map(parseInt) 结果是啥,为什么?

执行 ['1', '2', '3'].map(parseInt) 会得到 [1, NaN, NaN],这个结果可能和人们预期的不一样。

这是因为 map 方法会传入三个参数:当前遍历到的元素、当前遍历到的索引、原数组本身。而 parseInt 函数则接受两个参数:需要被解析的值、用于解析的进制数。在执行 ['1', '2', '3'].map(parseInt) 时,实际传入 parseInt 的参数如下:

  • '1'0(表示解析为十进制):解析后得到数字 1
  • '2'1(表示解析为一进制):解析后得到 NaN
  • '3'2(表示解析为二进制):解析后得到 NaN

所以结果为 [1, NaN, NaN]