JS Number() parseInt() parseFloat() 区别和 联系

Number() parseInt() parseFloat() 都会忽略前面的空格和0,但是在忽略完前面所有的空格后,如果找不到有效的数字字符
或者 Number():正负号 小数点
parseInt():正负号
parseFloat():正负号,小数点

Number()
boolean只会被转化成0和1
数字值不会改变
undefine 转化成NaN
null转化成0
如果是字符串
1.包含整型数字,则会将其转化为整数
2.包含有效的浮点数格式,则会将其转化为浮点数
3.如果包含有效的16进制格式 比如0xf ,则会将其转化为15
4.如果字符串为空,则转化为0
5.如果包含其他的字符,则转化为NaN

parseInt()
前面基本差不多,只不过parseInt() 不认识小数点,比如”0.123”将会被转化成0
parseInt具有解析八进制的能力,比如parseInt(“070”),将被解析为56
关于这点ECMAScript3和ECMAScript5有区别
所以不容易产生混淆的用法是 除了字符串参数外,再加一个参数,表示进制数
不如parseInt(“0xf”)的另外一种写法是parseInt(“f”,16)
parseInt(“070”) = parseInt(“70”,8)

parseFloat没有进制参数,而且除了数字,小数点和符号字符外都不认识,所以只能解析10进制
parseFloat(“0xff”) 解析为0
parseFloat(“0.12333.455656”) 只认识第一个小数点,所以,将被解析为0.12333
parseFloat(“070”) 将被解析为70

总结:
Number 和 parseInt 的区别是后者具有单独的进制参数,而且可以处理8进制数据,就算不填进制参数,只要格式恰当,也可以正确解析
parseInt parseFloat的区别是前者不能处理浮点数,后者只能处理10进制
Number parseFloat的区别是parseFloat不能识别各种进制的字符串,所以只能处理10进制

你可能感兴趣的:(js高级程序设计)