我终于搞懂了["1","2","3"].map(parseInt)!

今晚开开心心本来想早早收拾收拾睡觉,结果群里热心群友抛来一个问题“["1", "2", "3"].map(parseInt) 返回什么?”嗯?难道不是一眼看出的“1,2,3”?果然菜鸡总是暴露的很明显。蔡总再次看不下去,直接发知识点给我,此处再次感谢蔡总友情的讲解。

那么问题来了,为什么返回值是[1,NaN,NaN]呢?

因为parseInt有两个参数(string,radix),string指传入的字符串,radix指要解析的数字的基数(由于这里用到map函数,map函数一共向parseInt传3个参数,但parseInt只接受两个参数,所以在此处两个参数为字符串和它的索引号),且radix一定要在2-36范围内,特殊情况如为0或者不设定时,默认为表示10进制。

所以,此处举个例子:

var a=["1", "2", "3", "4","5",6,7,8,9,10,11,12,13,14,15];

a.map(parseInt);

返回结果为:

[1,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,9,11,13,15,17,19]

再详细点(保姆式)

当map循环到3时,索引radix为2,即parseInt(3,2),但是2是表示此处是二进制,因为3不是二进制数,故会Nan。以此类推,直到parseInt(10,9),因为10用九进制表示为9,是正常数值,故返回9。

搞懂了,睡吧睡吧。

你可能感兴趣的:(我终于搞懂了["1","2","3"].map(parseInt)!)