var a="123";
console.log(typeof a);
console.log(a);
未转换前a的类型为string,值为 “123”。
21:08:04.538 string at 强制类型转换.html:15
21:08:04.541 123 at 强制类型转换.html:16
方法一:调用Number()函数
(1)string转number
var a="123";
a=Number(a);
21:11:49.556 number at 强制类型转换.html:15
21:11:49.561 123 at 强制类型转换.html:16
注:1.如果是纯数字的字符串,则直接将其转换为数字
2.如果字符串中有非数字的内容,则转换为NaN
3.如果字符串是一个空串或者是一个全是空格的字符串,则转换为0
(2)boolean转number
a=true; //false
a=Number(a);
21:26:47.665 number at 强制类型转换.html:16
21:26:47.668 1 at 强制类型转换.html:17
(3)null转number
a=null;
a=Number(a);
21:29:04.067 number at 强制类型转换.html:16
21:29:04.069 0 at 强制类型转换.html:17
(4)undefined转number
a=undefined;
a=Number(a);
21:31:01.745 number at 强制类型转换.html:16
21:31:01.748 undefined at 强制类型转换.html:17
缺陷:对于非纯数字字符串无法转换(比如123abc),方法二可解决该问题
方法二:parseInt()函数、 parseFloat()函数
(1)parseInt()函数:
var a="123.456abc";
a=parseInt(a);
21:37:39.571 number at 强制类型转换.html:15
21:37:39.573 123 at 强制类型转换.html:16
(2)parseFloat()函数(相比parseInt()可以获取小数):
var a="123.456abc";
a=parseFloat(a);
21:42:13.795 number at 强制类型转换.html:15
21:42:13.798 123.456 at 强制类型转换.html:16
* 如果对非String使用parseInt()或parseFloat(),它会先将其转换为String然后在操作,所以类型为null和undefined经转换后值不是0或者1。
a=true;
//a=undefined;
a=parseInt(a);
21:51:34.001 number at 强制类型转换.html:17
21:51:34.003 undefined at 强制类型转换.html:18