碰到一面试题,考点在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
浙公网安备 33010602011771号