2013年, 加里·伯恩哈德就在微博上发布了以下代码段:
['10','10','10','10','10'].map(parseInt);
以为是[10,10,10,10,10]
,其实是[10,NaN,2,3,4]
解析:Array.map(parseInt)
等价于
Array.map((item,index)=>{
return parseInt(item,index)
})
那么结果便是[parseInt('10',0),parseInt('10',1),parseInt('10',2),parseInt('10',3),parseInt('10',4)]
parseInt(string, radix)中radix是可选的,表示要解析的数字的基数。(通俗讲便是根据radix进制解析)该值介于 2 ~ 36 之间。如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。
那么结果便是[10,NaN,2,3,4]