浅谈parseInt:
Radix:
parseInt(string, Radix)
- 解析一个字符串(string)并返回指定基数(Radix)的十进制整数,
- Radix 2-36之间的整数,要解析成整数的字符串多少进制–>进制数------> 十进制整数
/*
*'10' 被当作2进制数-> 10进制的整数->返回
*/
console.log(parseInt('10', 2))
/*
* 参数
* string - 如果不是字符串 ->toString(开头空白的忽略)
* radix -> 2-36 16解析的整数的字符串是16进制
* 返回值
*/
console.log(parseInt('123', 5))
/*
* 把'123'看作为5进制---> 转换为十进制
* 数字 × 进制数^ (数字位数 - 1) + 数字 × 进制数^ (数字位数 - 2) + 数字 × 进制数^ (数字位数 - 3)
* 1 × 5 ^ 2 + 2 × 5 ^ 1 + 3 × 5 ^ 0
* 1 * Math.pow(5, 2) + 2 * Math.pow(5, 1) + 3 * Math.pow(5, 0)
*/
console.log(parseInt('101', 2))
/*
* 把'101'看作为2进制---> 转换为十进制
* 数字 × 进制数^ (数字位数 - 1) + 数字 × 进制数^ (数字位数 - 2) + 数字 × 进制数^ (数字位数 - 3)
* 1 × 2 ^ 2 + 0 × 2 ^ 1 + 1 × 2 ^ 0
* 1 * Math.pow(2, 2) + 0 * Math.pow(2, 1) + 1 * Math.pow(2, 0)
*/
console.log(parseInt('0x629eb', 16))
/*
* 0x629eb ->16进制 -> 0-9 a-f 10-> 15
* 把'629eb'看作为16进制---> 转换为十进制
* 6 * Math.pow(16, 4) + 2 * Math.pow(16, 3) + 9 * Math.pow(16, 2) + 14 * Math.pow(16, 1) + 11 * Math.pow(16, 0)
*/
console.log(parseInt('123', 8))
/*
* 1 * Math.pow(8, 2) + 2 * Math.pow(8, 1) + 3 * Math.pow(8, 0)
*/
流程
- 可能会转字符串 toString
- 对字符串进行整数解析
- 返回整数或NaN
--------------------------------------
parseInt的字符串不符合radix基数的数字要求
parseInt(‘123’, 2)
parseInt(‘123’, 2)
从不符合该进制要求的数字开始忽略后续的所有字符
---------------------------------------
**支持 + -
去掉开头空格
1.去掉符号
2.对数字进行解析
---------------------------------------
parseInt radix 默认值 -> 10进制
0x 0X开头 -> 16进制
0开头 ->8进制、10进制 (ES5规范 10进制)->都要写清楚radix
01-> 1 02-> 2
其他开头 --------10进制**
/*
* parseInt -> NaN
* 数字转换为相应进制的字符串数字 toString
* (3).toString(2)-> 3作为10进制-> 2进制(字符串)
*/
let filterInt = function (value) {
if(/^(\-|\+)?([0-9]+|Infinity)$/test(value)) {
return Number(value);
}
return NaN
}