3个函数可以把非数值转成数值:Number()适用于所有类型,parseInt()和parseFloat()适用于字符串
一,Number()的适用规则:适用于所有类型
1,如果是布尔类型,true和false将分别被转换成1和0。
var num1 = Number(true) //1
2,如果是数值类型,只是会传入和返回。
var num2 = Number(25) //25
3,如果是null,返回值为0。
var num3 = Number(null) //0
4,如果是undefined,返回值为NaN。
var num4 = Number(undefined) //NaN
5,如果是字符串:
⑴,字符串只包含数值(包含正负号的情况),会转成对应的十进制。(前导0将为被忽略,即:'011'会转为11)
var num5 = Number('-25'); //-25
var num6 = Number('025'); //25
⑵,字符串为有效的浮点类型(包含正负号的情况),则会转成对应的浮点类型。(前导0将为被忽略,即:'01.1'会转为1.1)
var num7 = Number('-2.5'); //-2.5
var num8 = Number('-02.5'); //-2.5
⑶,字符串包含有效的十六进制格式,则会转成对应的十进制值。
var num9 = Number('0xf'); //15
⑷,字符串为空,转为0。
var num10 = Number(''); //0
⑸,字符串为除了上的格式以外,则会转为NaN。
var num11 = Number('Hello Word !') //NaN
6,如果是对象,则调用对象的valueOf()方法,然后会依照前面规则转换返回的值。如果转换的结果为NaN,则会调用toString()方法,然后再次依照前面的返回字符串的值。
二,parseInt()的适用规则:只能用于字符串
1,字符串为空,则返回为NaN。
var intNum1 =parseInt(''); // NaN
2,字符串的第一个非空字符不是数字或正负号,则返回值为NaN。
var intNum2 =parseInt('abc'); // NaN
3,字符串第一个有效字符为数字,继续解析,直至到一个非数字的字符。
var intNum3 =parseInt('123abc'); // 123
var intNum4 =parseInt('123abc321'); // 123
4,只会返回整数。(前导0将会被忽略)
var intNum5 =parseInt('12.1'); // 12
var intNum6 =parseInt('012.1'); // 12
5,字符串为‘0x’开头且后面为数字字符,则会转成十六制进行解析。
var intNum7 =parseInt('0xf'); //15
6,如果0开头且后面为数字 在ECMAScript3中当做八进制解析,但是在ECMAScript5中不支持。
var intNum8 =parseInt('070'); //56 在ECMAScript3中
var intNum9 =parseInt('070'); //70 在ECMAScript5中
7,支持使用基数的用法。parseInt(字符串,基数)
var intNum10 =parseInt('10',2); //2 (按二进制解析)
var intNum11 =parseInt('10',8); //8 (按八进制解析)
var intNum12 =parseInt('10',10); //10 (按十进制解析)
var intNum13 =parseInt('10',16); //16 (按十六进制解析)
三,parseFloat()的适用规则:只能用于字符串
1,字符串为空,则返回为NaN。
var floatNum1 =parseFloat(''); // NaN
2,字符串的第一个非空字符不是数字或正负号,则返回值为NaN。
var floatNum2 =parseFloat('abc'); // NaN
3,字符串第一个有效字符为数字,继续解析,直至到一个非数字的字符。
var floatNum3 =parseFloat('123abc'); // 123
var floatNum4 =parseFloat('123abc321'); // 123
4,字符串中第一个小数点有效,之后的小数点则无效。
var floatNum5 =parseFloat('15.2.55'); // 15.2
5,不能区分八进制和十六进制。
var floatNum6 =parseFloat('070'); // 70
var floatNum7 =parseFloat('0xf'); // 0
6,没有指定基数的用法。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------如遇到问题:+WX:WAZJ-0508,及时联系---------------------------------------------------------------------------------------------------------------------------------------------------