我终于搞懂了["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。

搞懂了,睡吧睡吧。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容