面试题:JS中map的陷阱

时间:2022-10-07 17:25:31

题目:

  ['2', '3', '4'].map(parseInt);

  请说出上面代码的执行结果

错误回答:

  [2, 3, 4]

真正答案:

  [2, NaN, NaN]

解析:

  因为 map 的算子是有两个参数的,第一个参数是被迭代数组的元素,第二个参数是该元素的下标。所以 ['2', '3', '4'].map(parseInt) 实际上相当于执行了 [parseInt('2', 0), parseInt('3', 1), parseInt('4', 2)],结果就变成了 [2, NaN, NaN] 了。

  所以,正确的写法应该是:['2', '3', '4'].map(num => parseInt(num, 10));