["1","2","3"].map(parseInt)为什么是[1,NaN,NaN]?

[“1”,“2”,“3”].map.(parseInt)输出结果是啥?

勤劳的我,今天又来更贴,嘻嘻(对于我来说有个小小的好消息,我接到小米二面了,耶耶耶,虽然还没有面,但是也是挺开心的)

前提要领:

今晚上又做了一套笔试题(不是大公司什么阿里腾讯的,就是普通公司),这个笔试题做完挺快的差不多花了半小时,大部分都是基础题,和我面的那些公司比起来是比较注重基础理解的题)其中有道题我感觉一半熟悉一半陌生,来说题↓:

[“1”,“2”,’‘3’’].map.(parseInt)输出结果是?

(小林看了官网的解释,又看了看别人的解析,就直接附上了,以备下次不记得了再回来看看,以下是一篇我觉得写得比较好的博主写的,写的也很容易懂)

首先,要想理解这个结果,就必须先深入理解parseInt函数和map函数的含义。

parseInt()
用法:将传入的字符串解析成数值,并返回一个结果。

语法:parseInt(string,radix)

string:必填。待转换的字符串参数。
radix:选填,若忽略次参数或传入0,则以十进制来解析。转换使用的基数(即多少进制)。取值范围在2~36之间,如果不在这个范围,则解析结果会返回NaN。

注意:(后面给出具体事例的时候,主要根据这块来判断)
parseInt()会根据传入的字符串识别出整数格式,如果字符串以“0x”开头且后跟数字字符,就会将其当做一个十六进制数,如果以“0”开头且后跟字符串,ECMAScript3则会将其当做一个八进制数来解析(ECMAScript5会判断为十进制)。

map:
ECMAScript5的内置数组迭代方法,将数组作为它的参数,对数组中的每一项运行给定的函数,返回每次函数调用的结果组成的数组。
语法:array.map(callbackfn[, thisArg])

注意:
回调函数的使用为:function callbackfn(item, index, array) {},即会传入三个参数——数组每一项元素的值、元素的索引、整个数组对象。

标题的原因
因为parseInt()是javaScript的内置函数,所以在用map迭代时,会给parseInt()函数传入三个值,即传入的情况是这样的:

//强制把数组元素的索引传到parseInt()的第二个参数中
parseInt(“1”, 0, [“1”, “2”, “3”]);
parseInt(“2”, 1, [“1”, “2”, “3”]);
parseInt(“3”, 2, [“1”, “2”, “3”]);
第三个数组参数被忽略,运行的结果为:

将字符串“1”转换成十进制,结果为1;

将字符串“2”转换成1进制,这里不存在1进制,也就是说不符合2~36的范围,返回NaN;

同理,第三个元素的处理也是NaN。

因此!最后返回的结果为标题中的[1,NaN,NaN]。

最后附上原博主的链接了:
https://www.cnblogs.com/xiaokeai0110/p/9645147.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值