转换成数值的三种方法
把参数转换成数值的三种方法:Number(),ParseInt(),ParseFloat()
Number():
入参 出参
true/false 1/0
数值,如1 数值1
空字符串 0
字符串只包含有数字(如011) 11(忽略前导0)
字符串包含有效的浮点格式(如01.11) 1.11(忽略前导0)
字符串包含有效的十六进制格式(如0xf) 十进制整数:15
字符串包含除上面几种格式以外的字符(如000xf) NAN
对象 先调用obj.valueOf(),如果是NAN,则再调用obj.toString(),如果不能转换成数值,就返回NAN
ParseInt(): 符合数值格式即被转成整数数值,其他则为NAN;路径为忽略空字符串,第一个字符如果不是数字或者负号,则为NAN
入参 出参
空字符串 / 第一个字符不是数字或者负号(如‘blue235’ / '.23' / ' ') NAN
'123blue' 123
'22.5' 22
注意:ES3和ES5对于是否按照八进制和十六进制解析是有差异的,ES5不支持这么解析,所以可能会出错。为了明确能够按照我们希望的进制格式去解析,推荐指定进制格式。如parseInt('0xf',16),即使是十进制数值,也建议标明是10进制,如parseInt('012',10)。
ParseFloat(): 符合数值格式即被转成浮点数数值,其他则为NAN;路径为忽略空字符串,第一个字符如果不是数字或者符号,则为NAN
1、parsefloat只解析十进制数据,所以会忽略前导0,因此如parsefloat('0xA')会返回0
2、parsefloat解析字符串中第一个小数点,第二个小数点就是无效的字符了,停止往后解析
入参 出参
‘1234blue’ 1234
'0xA' 0
'22.5.5' 22.5
'098.5' 98.5
'33.000' 33