["1", "2", "3"].map(parseInt) 答案是多少?
让我们先看看最直接最粗暴的方式
没错,答案就是:[1, NaN, NaN],那为什么答案是[1, NaN, NaN]呢?
1.让我们先了解一下map函数的定义
JavaScript Array map() 方法
定义和用法
map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
map() 方法按照原始数组元素顺序依次处理元素。
注意: map() 不会对空数组进行检测。
注意: map() 不会改变原始数组。
因为
parseInt
需要两个参数
(val, radix),
但
map
传了
3
个
(element, index, array)
即原例子相当于
[parseInt(
"1"
,0),parseInt(
"2"
,1),parseInt(
"3"
,2)]
分析:
按十进制转换输出1
1不在2~36之间,输出NaN
字符串"3"里面没有合法的二进制数,输出NaN
所以最后结果是[1,NaN,NaN]