Javascript 中提供了三种函数,将变量转化成数字类型。
parseInt 和 parseFloat 用来解析以数字开头的部分数字字符串;
1) parseInt(arg1, arg2), 只能用于将字符串转换成10进制的整数,第二个参数指定转换基数,即第一个参数的原始进制;第二个参数不存在时,parseInt 只能识别,0x 开头的16进制数和0开头的8进制数, 其他都按10进制转10进制。
2) parseFloat(arg1), 只能用于将字符串转换成10进制的浮点数,只接受一个参数,不能识别数据的原始进制,所有数据基数按10转换。
Number 时JS 提供类型强制转换转函数,用于将其他类型的数据转换成数字类型,不支持部分转换。
Number(arg), 只接受一个参数arg,arg 可以是各种数据类型
arg 为 Boolean类型, true转换成1, false 转换成0;
arg 为 number 类型,转换成本身;
arg 为 string 类型,按10进制转换,可识别“0x” 开头的16进制数,其他都按10为基数转换,且不支持部分转换。无效的字符串转换为NaN,空字符串转换为0;
arg 为 undefined , 转换成 NaN;
arg 为 null,转换成 0;
arg 为 对象,包括Object, Array, Function, 则调用对象的valueOf()方法,按上面的规则转换,若转换为NaN, 再调用 toString() 方法按上面的规则转换,
Number([])为0;
Number([1]) 为1;
Number([1,2]) 为NaN;
Number({}) 为NaN;
应用1:“==” 数据类型隐式转换
let a = []==false; // a 为 true, 因为 false 和[] 类型强转换为数字都是0
let b = "true"==true; //b 为 false,因为 true 类型强转换为数字为1,“true” 类型强转换为数字为NaN
“==” 在类型转换时,若有一方为boolean 变量,先将boolean 变量用Numer()方法强转换成数字,再与另一方比较。转换规则表:
应用二:进制间转换
parseInt 再将字符串转换成10进制数据时,可以指定转换的基数,也就是指定字符串原始进制。 另外Number对象还有一个toSting(arg) 方法可以指定数据转换成字符串后的进制。这两个方法相结合,可以实现数据进制间 的互转。
parseInt('11',2); // 3, 从2进制转10进制
Number(3).toString(2); //'11', 从10进制转2进制