/**
* Radix
*
* parseInt(string, redix)
*
* 解析一个字符串(string)并返回指定基数(Radix)的十进制整数
* Radix 2-36之间的整数, 要解析成整数的字符串是多少进制 -> 进制数转换成十进制整数
*/
/**
* 参数
*
* string - 如果不是字符串 -> toString(开头的空白忽略)
* radix -> 2-36 16要解析的整数字符串是16进制
*
* 返回值
* 能解析返回的整数
* 返回NaN:
* radix 小于2或大于36, 0除外
* 未填写参数
* 字符串第一个字符不能被正常转换数字的情况
* 字符串第一个字符不符合进制要求的情况
*/
console.log(parseInt('123', 5));
/**
* 把 '123' 作为5进制 -> 十进制
* console.log('3'.toString(2));
* 数字 x 进制数 ^ (数字位数 - 1)
* 1 * Math.pow(5, 2) + 2 * Math.pow(5, 1) + 3 * Math.pow(5, 0)
*/
// 16进制 -> 0 - f
console.log(parseInt('0x629eb', 16));
/**
* 6 * Math.pow(16, 4) + 2 * Math.pow(16, 3) + 9 console.log('3'.toString(2));* Math.pow(16, 2) + 14 * Math.pow(16, 1) + 11 * Math.pow(16, 0)
*/
// 返回NaN
console.log(parseInt('111', 0)); // 111
console.log(parseInt('a12'));
console.log(parseInt());
console.log(parseInt('321', 2));
/**
* 流程
* 1. 可能会转字符串 toString
* 2. 对字符串进行整数解析
* 3. 返回整数或NaN
*
* parseInt的字符串不符合radix基数的数字要求
*
*
* 支持 + -
* 去掉开头的空格
*
* 1. 去掉符号
* 2. 对数字进行解析
*
* parseInt radix 默认值 -> 10进制错的
*
* 0x 0X -> 16进制
* 0 -> 8进制, 10进制 (ES5规范 10进制) -> 都要写清楚radix
* 其他开头的 -> 10进制
*
*/
/**
* toString
* 数字转换为相应进制的字符串数字
*/
// 官方 严格判断是够为整型
var filterInt = function (value) {
if(/^(\-|\+)?([0-9]+|Infinity)$/.test(value)) {
return Number(value);
}
return NaN;
}
1.toString, 100..toString