面试题1-2-3mapparseInt输出结果

38次阅读

共计 598 个字符,预计需要花费 2 分钟才能阅读完成。

很多人在面试中可能都有见过这道题,它的答案是[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…

正文完
 0