JS数值转换
JS数值转换的方式有4种:Number(),parseInt(),parseFloat(),数据类型*1或者/1。
他们的区别在于:
1.Number():可以将非数值转为数值
如果是Boolean值,true和flase将分别被转换为1和0
如果是数字,那么就是简单的传入和返回
如果是null值,那么返回0
如果是undefined,那么返回NaN
console.log(Number(true));//1 console.log(Number(false));//0 console.log(Number(10));//10 console.log(Number(null));//0 console.log(Number(undefined));//NaN
如果是字符串,那么又有如下的规则:
如果字符串只包含数字,则将其转为十进制,即”1”会变成1,”123”变成123, 而”011”会变为11 (注意这里不会被当成八进制来处理)
如果字符串中包含有效的十六进制格式,如”1.1”, 则将其转换为对应的浮点数值
如果字符串中包含有效的十六进制格式,例如"0xf", 则会将其转换为相同大小的十进制整数。
如果字符串是空的,则将其转换为0
如果字符串包含上述格式之外的字符,则将其转换为NaN
console.log(Number("1"));//1 console.log(Number("012"));//12 console.log(Number("0o10"));//8 console.log(Number("0b111"));//7 console.log(Number("3.14"));//3.14 console.log(Number("0xf"));//15 console.log(Number(""));//0 console.log(Number("123Hello"));//NaN
2.parselnt():也是将一个非数值转为数值
相比number0函数, parselnt0会更多的看是否有数字,有就会将其转换为数值。
最简单的例子为number(函数转换”123Hello"时会转换为NaN,而parselnt0则会将其转换为123。碰到空字符串时,number(函数会将其转换为0,而parselnt0则会将其转换为NaN。最后是在碰到小数时,会有一个取整的过程。例如”3.14”会 被转换为”3”
console.log(parseInt("1"));//1 console.log(parseInt("012"));//12 console.log(Number("0o10"));//8 console.log(Number("0b111"));//7 console.log(parseInt("3.14"));//3 console.log(parseInt("0xf"));//15 console.log(parseInt(""));//NaN console.log(parseInt("123Hello"));//123
3.parseFloat():将非数值转为浮点数
parseFloat0只解析十进制值,所以没有第二个参数,该函数会将带有小数点的字符串转换为小数。如果没有小数点的数会被转换为整数。同样的parseFloat()也是尽 可能转换更多的数值,
console.log(parseFloat("21"));//21 console.log(parseFloat("123Hello"));//123 console.log(parseFloat("0xA"));//0 console.log(parseFloat("3.14"));//3.14 console.log(parseFloat("22.34.5"));//22.34 console.log(parseFloat("0908.34"));//908.34 console.log(parseFloat("3.1415e2"));//314.15
4.数据类型*1或者/1