JavaScript中数字字符串转数字
2019-04-17 本文已影响0人
Kevin丶CK
基本可以通过三种方式:
1、转换函数
js提供了parseInt()和parseFloat()两个转换函数。前者把值转换成整数,后者把值转换成浮点数。只有对String类型调用这些方法,这两个函数才能正确运行;对其他类型返回的都是NaN(Not a Number)。
console.log(typeof parseInt('1231'));//number
console.log( parseInt('aaa'));//NaN
parseInt()方法还有基模式,可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数。基是由parseInt()方法的第二个参数指定的。
console.log(parseInt("10", 2)); //returns 2
console.log(parseInt("10", 8)); //returns 8
console.log(parseInt("10", 10)); //returns 10
parseFloat()方法与parseInt()方法的处理方式相似。
使用parseFloat()方法的另一不同之处在于,字符串必须以十进制形式表示浮点数,parseFloat()没有基模式。
console.log(typeof parseFloat('1231'));//number
console.log(parseFloat('aaa'));//NaN
2、强制类型转换
还可使用强制类型转换处理转换值的类型。使用强制类型转换可以访问特定的值,即使它是另一种类型的。
ECMAScript中可用的3种强制类型转换如下:
Boolean(value)——把给定的值转换成Boolean型;
Number(value)——把给定的值转换成数字(可以是整数或浮点数);
String(value)——把给定的值转换成字符串。
用这三个函数之一转换值,将创建一个新值,存放由原始值直接转换成的值。这会造成意想不到的后果。
Number()的强制类型转换与parseInt()和parseFloat()方法的处理方式相似,只是它转换的是整个值,而不是部分值。
console.log(typeof Number('1231'));//number
console.log(Number('aaa'));//NaN
console.log(Number(false)); //0
console.log(Number(true)); //1
console.log(Number(undefined)); //NaN
console.log(Number(null)); //0
3、利用js变量弱类型转换
js的弱类型的特点,只进行了算术运算,实现了字符串到数字的类型转换,不过这个方法还是不推荐的
let str = '123';
let strToNum = +str;
console.log(typeof strToNum);//number
console.log(typeof +str);//number
console.log(typeof -str);//number