乍看之下结果好像是[1,2,3],但既然是面试题,就不会这么简单,我们下面来分析一下。
parseInt函数
我们先来了解一下parseInt函数的作用。
函数作用:parseInt函数解析一个字符串参数,并返回一个指定基数(几进制)的整数
语法:parseInt(string, radix)
参数解析:第一参数是一个字符串;第二个参数radix的范围是2~36,表示2进制到36进制。
第二个参数 radix的规则:
- 如果省略该参数或其值为 0,则默认以10进制来返回结果
- 如果该参数以 “0x” 或 “0X” 开头,将以 16 进制来返回结果
- 如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。
[‘1’, ‘2’, ‘3’].map(parseInt)
了解了parseInt函数的基本特性之后,我们分析题目,其实题目等价于如下代码:
['1','2','3'].map((item, index) => {
return parseInt(item, index)
});
所以上述代码的执行步骤为:
parseInt('1',0);//1
parseInt('2',1);//NaN
parseInt('3',2);//NaN
上述代码的输出结果:第一行参照规则1,第二行参照规则3,第三行输出NaN是因为3不是二进制(二进制只有0和1)
所以最终的返回结果为[1,NaN,NaN]