[‘10‘,‘10‘,‘10‘,‘10‘,‘10‘].map(parseInt)

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]

上一篇:[Java] 202104-1


下一篇:Js(一):基本数据类型与数据类型转换