['1','2','3'].map(parseInt) 返回的是什么?
返回的是:[1,NaN,NaN]
首先我们先分析一下 parseInt 函数:
parseInt()函数解析一个字符串参数,并返回指定基数的整数(数学系统中的基数)。
它可以有两个参数,用法:parseInt(string, radix)
string:要解析的值。如果其不是字符串,则将其转换为字符串(使用toString抽象操作)。字符串开头的空白符将会被忽略。
radix:可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间,默认为10
返回值:返回解析后的整数值。 如果被解析参数的第一个字符无法被转化成数值类型,则返回 NaN
然后我们再来分析一下数组的 map 方法:
map()
方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果
用法:
let array = arr.map(function callback(currentValue, index, array) { // Return element for new_array }[, thisArg])
参数:
callback :生成新数组元素的函数,使用三个参数:
currentValue:callback的第一个参数,数组中正在处理的当前元素
index:callback的第二个参数,数组正在处理的当前元素的索引值
array:callback的第三个参数,当前数组
返回值:一个新数组,每个元素都是回调函数的结果。
通过上面的说明,我们可以分析得出,['1','2','3'].map(parseInt) 都做了什么事情了:
parseInt('1',0); // 1
parseInt('2',1); // NaN
parseInt('3',2); // NaN
所以最后返回的就是 [1,NaN,NaN]