['1','2','3'].map(parseInt)会返回什么,为什么?

['1','2','3'].map(parseInt)会返回什么,为什么?

第一眼看到这个题目的时候,脑海跳出的答案是 [1, 2, 3],但是真正的答案是[1, NaN, NaN]

map函数

首先让我们回顾一下,map 函数的第一个参数 callback。这个 callback 一共可以 接收三个参数,其中第一个参数代表当前被处理的元素,而第二个参数代表该 元素的索引,第三个参数为当前元素属于的数组对象。

WX20221230-020941@2x

parseInt 函数

parseInt函数是用来解析字符串的,使字符串成为指定基数的整数,接收两个参数,第一个参数为被处理的值(字符串),第二个为解析时的基数。parseInt(string,radix)

WX20221230-021523@2x

了解了 mapparseInt这两个函数之后,我们再来看

['1','2','3'].map(parseInt)

//第一次执行
parseInt('1',0) // 返回 1
//第二次执行
parseInt('2',1) // 基数为1(1进制)返回 NAN
//第三次执行
parseInt('3',2) // 基数为2(2进制) 2进制 返回 NAN