我的github

js parseInt()使用注意

Posted on 2017-11-20 11:49  前端-小李  阅读(522)  评论(0)    收藏  举报

碰到一面试题,考点在map和parseInt的默认参数

["1", "2", "3"].map(parseInt)

 首先,map接收3个参数

[].map(function(value, index, array) {
    // ...
});

 然后,parseInt可以接收两个参数,第二个可缺省,

parseInt(string, radix)

 两个方法的组合使用产生的坑是   parseInt接收map传的3个参数,并忽略第三个参数,结果是[1,NaN,NaN].

parseInt('1', 0,['1','2','3']);// 1     parseInt('2', 1,['1','2','3']);// NaN    parseInt('3', 2,['1','2','3']);// NaN

  总结parseInt的详细用法

1、第二个参数radix缺省

首先会先分析第一个参数string的结构

(1)以‘0X’或‘0x’开头,会按照十六进制处理;

parseInt("0xa");// 10
parseInt("0xa", 0);// 10

  (2)以‘1-9’的数字开头,按照十进制处理

2、radix有值,分几种情况

(1)参数为(2-16)范围内,按照相应进制数解析,前提是正确使用

parseInt("0xa", 16);// 10
parseInt("17", 8);// 15

parseInt("6", 7); // 6
parseInt("1", 2);// 1
parseInt("3", 2);// NaN   这也是上面例子报错的原因

(2)参数是0,按照十进制处理

parseInt("11", 0); // 11

  

 

 

成长在2017的老李