这道题是每次面试都能刷到的一道题目,答案是 //1 NaN NaN

此题涉及的几个知识点有:

1、parseInt(string,radix)

string:要被解析的字符串,如果不是字符串需要转化为字符串

radix:一个介于2-36之间的的整数,表示上述字符串的基数,是一个可选参数,如果没有或者为0则默认是10

返回值:返回一个整数或者NaN

2、map()方法创建一个数组,其结果是该数组中每一个元素都调用该方法返回后的结果

3、进制换算不知道可以自行百度,以下给出一个简单地例子

数字 101  换算为2进制数字

1*(2^0) +0*(2^1) + 1*(2^2) = 5

有了以上知识储备接下来我们先看这样一道题:

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

parseInt('10',0)  //10  第二个参数没有或者为0默认为10进制  0*(10^0) +1*(10^1)= 10

parseInt('10',1)  //radix参数应介于2-26之间故而返回 NaN

parseInt('10',2) //  0*(2^0) +1*(2^1) = 2

parseInt('10',3) // 0*(3^0) +1*(3^1) = 3

parseInt('10',4) // 0*(4^0) +1*(4^1) = 4

做了这道题后相信上面这道题已经是不在话下了

同理我们将其每一项遍历出来计算

parseInt('1',0)  // 10  第二个参数没有或者为0默认为10进制  0*(10^0) = 1

parseInt('2',1)  //radix参数应介于2-26之间故而返回 NaN

parseInt('3',2)  // 3>2 故而为NaN

这里面又涉及一知识点  2进制的基数一定比2小  其他基数同理,试试感受一下这样一个题加深理解

parseInt('1061',3)  我们可以看到里面有个6>3 这是此时忽略6之后的数,即忽略(大于等于radix的数及其之后的数) 

等价于计算parseInt('10',3) = 3

再来看一道这样的题:

parseInt('3061',3) 第一位数字就等于radix故而直接返回 NaN

 

 

了解了以上题和规则及其知识点,以后再也不怕这种题了。。。  

end.......

 

posted on 2021-02-26 11:04  白不了的黑发  阅读(81)  评论(0编辑  收藏  举报