JS中,有四种基本数据类型string、number、Boolean、undefined,以及一种引用类型object。
将其他数据类型转换为number一共有四种方法,分别是:
第一种方法:使用Number()函数
转化代码如下
<script type="text/javascript">
var a = true;
a = Number(a);
console.log(typeof a);
console.log(a);
//使用Number()函数进行转换,纯数字可以直接转换为数字
//但是字符串里有非数字,则会转化为NaN
//字符串里面若为空,则转换为0
//布尔值,true转换为1,false转换为0
//null转换为数字0,undefined转换为NaN
</script>
NaN的意思是not a number,这是一个非数字
一定要记住:只有Number()函数,没有toNumber()方法
第二种方法:使用parseInt()或者parseFloat()
转化代码如下
<script type="text/javascript">
a = "678.5px";
a = parseFloat(a);
console.log(typeof a);
console.log(a);
//parseInt()和parseFloat(),专门转换字符串
//可以将字符串中有效的整数或者浮点数取出来,从左往右,遇非数字,
//舍弃后边所有,故第一个若为非数字,则返回NaN
//parseFloat(),如果遇到有两个点,则舍弃第二个点,以及后面内容
//对非string使用,会将其转换为string,然后再操作,会返回NaN
</script>
特殊情况
如"070"这种字符串,转换类型时,浏览器可能会当成8进制解析,也可能会当成10进制解析,此时需要在parseInt()中加入第二个参数,用于表示进制,用逗号隔开
若字符串为一个点".",则parseInt()和parseFloat()都会返回NaN
若字符串点后边有数字,parseInt()会返回NaN,parseFloat()会在第一个点的前边加一个0。如".8.7",parseInt()会返回NaN,parseFloat()会返回0.8
第三种方法:隐式转换1
第一种隐式转换,就是使用运算符减、乘、除的其中一种,在不改变原值的情况下,和number类型的值做运算,具体代码如下
<script type="text/javascript">
var a = "123";
a = a - 0;
console.log(typeof a);
console.log(a);
</script>
若字符串中的是纯数字,则直接返回该数值
若字符串中不是纯数字,则返回NaN
若字符串为空,则返回0
转换布尔型,则true返回1,false返回0
转换undefined,则返回NaN
第四种方法:隐式转换2
第二种隐式转换,就是在被转换的值前边,加入一个负号,或者正号
代码如下:
<script type="text/javascript">
var a = "123";
a = +a;
console.log(typeof a);
console.log(a);
</script>
转换后的值,和第一种隐式转换相同
但是若使用负号,则浏览器会对值进行取反,此时需要在前边再加一个负号,不过需要用括号将两个负号分开,或者需要将值加一,即写成 -(-a)或者-a+1
以上就是,将其他类型转换为number的四种方法。