1

很多人在面试中可能都有见过这道题,它的答案是[1, NaN, NaN],为什么呢?

首先我们看一下map函数的参数定义:

array.map(function(currentValue,index,arr), thisValue)

具体含义就不说了,再看看parseInt函数参数定义:

parseInt(string, radix)

很多人都用过parseInt,但是基本上却很少用它的第二个参数,在w3school是这么定义的:

表示要解析的数字的基数。该值介于 2 ~ 36 之间。
如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。
如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。`

在我们这道题中,很明显,它的返回值实际上就是:

[
    parseInt('1', 0),
    parseInt('2', 1),
    parseInt('3', 2)
]

从它的定义来看,由于第一个传入的第二个参数是0,所以它以10为基础来解析,所以返回数字 1 本身
第二个传入的第二个参数是1,小于2,所以返回的NaN
第三个传入的第二个参数是2,由于我们的二进制只有0、1,所以当我们传入字符串3时无法识别,所以还是返回的NaN

以上

参考资料:
parseInt: https://www.w3school.com.cn/j...
map: https://www.cnblogs.com/zhaox...


花伊浓
55 声望2 粉丝