三个数值转换的函数
Number() 可以用于任何数据类型
parseInt() 用于把字符串转换成数值
parseFloat() 用于把字符串转换成数值
Number()函数
数据类型 | 转换后的数值 |
---|---|
Boolean | true->1 false->0 |
数字 | 简单的传入和传出 |
null | 0 |
undefined | NaN |
Object | NaN |
console.log(Number(true)); //1
console.log(Number(false)); //0
console.log(Number(null)); //0
console.log(Number(undefined)); //NaN
console.log(Number([1,2,3]); //NaN
console.log(Number({name: 'hello'}); //NaN
着重强调当数据为字符串类型时的转换规则:
只要有一个字符无法被转换成数字,则整个字符串被解析为NaN
字符串只包含数字:Number()函数会把字符串中的数字转换为十进制数值,无法转换八进制的数(前面的0被忽略,当作十进制数)
字符串包含浮点数时,将其转换为对应的浮点数值(忽略前面的0)
空字符串时,返回0
- 字符串中包含以上格式之外的字符,将其转换为NaN
console.log(Number('014')); //14
console.log(Number('0xF4')); //244
console.log(Number('0560.4')); //560.4
console.log(Number('0560.4.5')); //NaN
console.log(Number('')); //0
console.log(Number('hello')); //NaN (该字符串中不包含任何有意义的数值)
parseInt()函数
不能解析八进制数的字符串
- 如果第一个字符不是数字或者正负号,返回NaN
console.log(parseInt('')); //NaN
console.log(parseInt('y33')); //NaN
- 当遇到非数字字符时解析停止或者解析完所有字符,返回所解析的数值
console.log(parseInt('123bule')); //123
console.log(parseInt('5.4')); //5
console.log(parseInt('045')); //45 (忽略前面的0)
parseInt()函数可以提供第二个参数
例如:
parseInt('34', 16); //52 (这里的16说明要解析的值是16进制的字符串)
parseInt('AF', 16); //175
parseInt('AF'); //NaN
parseFloat()函数
该函数只解析十进制的数值字符串,所以没有第二个参数
- 在解析过程中同样会忽略前面的0,遇到的第一个小数点是有效的,第二个小数点是无效的,后面的字符会被忽略
console.log(parseFloat('5.8.4')); //5.8
console.log(parseFloat('0895.9')); //895.9
- 如果字符串没有小数点,或者小数点后都是0,最终会返回整数
console.log(parseFloat('5.0')); //5
- 特别注意:十六进制的字符串在被转换时始终是0
console.log(parseFloat('0xA')); //0