数值转换
-
Number() 可以用于任何数值类型
- 如果是Boolean类型,true和false分别被转换成1和0
- 如果是数字值,只是简单的传入和传出
- 如果是null,返回0
- 如果是undefined,返回NaN
- 如果是字符串
- 如果字符串只包含数字,则将其转化为十进制数字,‘1’会被转化成1,‘123’会被转化为123,‘011’会被转化为11(会忽略字符串前导0)
- 如果字符串包含有效的浮点格式,‘1.1’会被转化为1.1,同样忽略前导0
- 如果字符串包含有效的十六进制格式,例如‘0xf’,则将其转化为相同的浮点数值
- 如果字符串是空的,则将其转化为0
- 除上述格式外,将其转化为NaN
- 转化缺点:转换复杂而且不合理,因此引入了parseInt()和parseFloat()
-
parseInt( string , 进制数 ) 会忽略字符串前面的空格,直到找到第一个非空格字符
-
如果第一个不是数字字符或者正负号,parseInt会返回NaN
-
空字符串会返回NaN
-
如果第一个字符是数字字符,parseInt就会解析第二个字符,知道解析完所有后续字符,直到遇到了一个非数字字符。
var num1 = parseInt('123blue') //1234 var num2 = parseInt('') //NaN var num3 = parseInt('0xA') //10 十六进制 var num4 = parseInt('70') //70
-
在ECMAscript3 javascript引擎中,parseInt可以解析八进制,而在ECMAscript5 javascript引擎中parseInt已经不再具有解析八进制的能力,前导零会被默认无效,所以引进了第二个参数
var num1 = parseInt('AF',16) //175 var num2 = parseInt('AF') //NaN 可以按照2,8,10,16进制转换
-
-
parseFloat( string )
-
从第一个字符开始解析,一直解析到字符串末尾,遇到第一个无效的浮点数字符为止。也就是说字符串中的第一个小数点是有效的,第二个小数点就是无效的,‘22.34.5’将会被转化为22.34
-
parserFloat会始终忽略前导的零,十六进制格式的字符串始终都会被转化成零
-
parseFloat只能解析十进制,因此没有第二个参数指定基数的用法
-
如果没有小数点,或者小数点后面是零,则会返回整数
var num1 = parseFloat('1234blue') // 1234整数 var num2 = parseFloat('0xA') //0 var num3 = parseFloat('22.5') //22.5 var num4 = parseFloat('22.3.5') //22.3 var num5 = parseFloat('0980.5') //980.5
-