获得徽章 1
#每日一题# 面试题
['1','2','3'].map(parseInt) what&why
parseInt()函数解析一个字符串参数,并返回一个指定基数的整数
parseInt()其中第一个参数string,第二个参数radix(基数)
string中的每一位都比基数小时,且radix在2到36之间是有正确输出的。
radix不在这个范围的返回NaN。
但是!radix为undefined、0、未指定时:
1.string以'0x'开头基数为16
2.以0开头基数为8或10
3.其余情况,基数为10
eg:parseInt(101,2)//5
因为每一位都比2小,所以:1*(2º)+0*(2¹)+1*(2²)=5
若有一位>=基数,那那一位及之后的都忽略,算之前的那几位比基数小的就好。
如果第一位就>=基数,则返回NaN。
map()创建一个新数组。其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。
所以题目实际上执行的代码是:
['1','2','3'].map(item,index) => {return parseInt(item,index)}
parseInt(1,0)
parseInt(2,1)
parseInt(3,2)
所以题目的结果应该是:1,NaN,NaN
['1','2','3'].map(parseInt) what&why
parseInt()函数解析一个字符串参数,并返回一个指定基数的整数
parseInt()其中第一个参数string,第二个参数radix(基数)
string中的每一位都比基数小时,且radix在2到36之间是有正确输出的。
radix不在这个范围的返回NaN。
但是!radix为undefined、0、未指定时:
1.string以'0x'开头基数为16
2.以0开头基数为8或10
3.其余情况,基数为10
eg:parseInt(101,2)//5
因为每一位都比2小,所以:1*(2º)+0*(2¹)+1*(2²)=5
若有一位>=基数,那那一位及之后的都忽略,算之前的那几位比基数小的就好。
如果第一位就>=基数,则返回NaN。
map()创建一个新数组。其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。
所以题目实际上执行的代码是:
['1','2','3'].map(item,index) => {return parseInt(item,index)}
parseInt(1,0)
parseInt(2,1)
parseInt(3,2)
所以题目的结果应该是:1,NaN,NaN
展开
评论
点赞
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
![[流泪]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_6.dde0d83.png)
![[黑脸]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_99.3264111.png)