数值转换(Number()、parseInt()、parseFloat())

Number()函数转换规则:
1.如果是Boolean值,true和false将分别转换为0和1

Number(true);//1
Number(false);//0

2.如果是数字值,只是简单的传入和返回

Number(1111);//1111

3.如果是null值返回0

Number(null);//0

4.如果是undefined,返回NaN

Number(undefined);//NaN

5.如果是字符串遵循下列规则:
(1)如果字符串只包含数字(包括前面带正号和负号的情况),则将其转化为十进制数值。

Number("11");//11
Number("-11");//-11
Number("+11");//11
Number("000011");//11//会忽略前导0

(2)如果字符串中包含有效的浮点格式,如"1.1",则将其转换为对应的浮点数值(会忽略前导零)。

Number("1.1");//1.1
Number("0001.1");//1.1

(3)如果字符串中包含有效的十六进制格式,例如"0xf",则将其转换为相同大小的十进制整数值。

Number("0xf");//15

(4)如果字符串是空的(不包含任何字符),则将其转换为0.

Number("");//0

(5)如果字符串中包含上述格式之外的字符,则将其转换为NaN。

Number(12a);//报错
Number("12d");//NaN
Number("hello");//NaN

6.如果是对象,则调用对象的valueOf()方法,然后依照前面的规则转换返回的值。如果转换的结果为NaN,则调用对象的toString()方法,然后再次依照前面的规则转换返回的字符串值。

Number({a:1});//NaN

parseInt()函数转换规则:
1.parseInt()函数在转换字符串时,更多的是看其是否符合数值的模式。它会忽略字符串前面的空格,直到找到第一个非空格字符。如果第一个字符不是数字字符或者负号,parseInt()就会返回NaN;

parseInt("  1");//1
parseInt("abc");//NaN
parseInt("a12");//NaN
parseInt("");//NaN

2.如果第一个字符是数字,parseInt()会继续解析第二个字符,直至解析完所有的后续字符或遇到一个非数字字符。

parseInt("12a");//12
parseInt("0xA");//10(十六进制)
parseInt("22.5");//22
parseInt("70");//70
parseInt("070");//ECMAScript3认为是56(八进制),ECMAScript5认为是70(十进制)

3.为了避免进制上存在的问题,可以为parseInt提供第二个参数:转化时使用的基数

parseInt("0xA",16);//10(十六进制)
parseInt("AF",16);//175(十六进制)
parseInt("AF");//NaN
parseInt("070",16);//56
parseInt("10",2);//2
parseInt("10",8);//8
parseInt("10",10);//10
parseInt("10",16);//16

parseFloat()函数转换规则:
parseFloat()函数与parseInt()函数类似,也是从第一个字符(位置0)开始解析每个字符。而且一直解析到字符串的末尾,或者解析到遇到一个无效的浮点数字字符为止。也就是说,字符串的第一个小数点是有效的,而第二个小数点是无效的,因此它后面的字符串将被忽略。parseInt只解析十进制值,他没有第二个参数,遇到十六进制字符串则始终会被转换为0。

parseFloat("1234abc");//1234
parseFloat("0xA");//0
parseFloat("11.1");//11.1
parseFloat("11.11.11");//11.11
parseFloat("0908.5");//908.5
parseFloat("3.12e7");//31250000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值