详解Js
中非数值转化为数值的四种方法
大一暑假:2022-8-11
1.Number()方法
语法:Number(object)
作用:对象的值转换为数字。如果对象的值无法转换为数字,那么 Number()
函数返回 NaN
。
转化规则:
1.object
为数字:只是单纯的传入和返回。
console.log(Number(1)) // 1
console.log(Number(1.314)) //1.314
2.object
为布尔值,true
=>1和false
=>0.
console.log(Number(true)) //1
console.log(Number(false)) //0
3.object
为null,=>0
console.log(Number(null)) //0
4.object
为undefined,=>NaN
console.log(Number(undefined)) //NaN
5.object
为字符串:忽略前后空格,碰到第一个非数字字符为止,空字符串返回 0
- 纯数字字符串,直接转化为数字
console.log(Number("123")) // 123
console.log(Number("1.16"))//1.16
console.log(Number("0x12")) //18 0x表示16进制
- 字符串中有非数字的内容,则转换为
NaN
console.log(Number("123 456")) //NaN
console.log(Number("123aaa")) //NaN
console.log(Number("1.12.36")) //NaN
- 如果字符串是一个空串或者是一个全是空格的字符串,则转换为 0
console.log(Number("")) //0
console.log(Number(" ")) //0
6.object
为对象:调用内部 ToPrimitive(value, Number)
,如果是 Date
对象,返回从 1970年1月1日至Date的毫秒数
console.log(Number({})) //NaN
console.log(Number(new Date())) //1660207696675
2.parseInt()方法
语法:parseInt(string, radix)
参数:string
必需。要被解析的字符串。redix
可选。表示要解析的数字的基数,不是目标的进制。该值介于 2 ~ 36 之间。
作用:解析一个字符串,并返回一个十进制整数。
注意:
- 只有字符串中的第一个数字会被返回。
- 开头和结尾的空格是允许的。
- 如果字符串的第一个字符不能被转换为数字,那么
parseInt()
会返回NaN
。 - 默认要被解析的字符串是十进制的基数。
console.log(parseInt("10")) //10
console.log(parseInt("10.33")) // 10
console.log(parseInt("34 56 78")) //34
console.log(parseInt(" 10 ")) //10
console.log(parseInt("40 years")) //40
console.log(parseInt("he is 40")) //NaN
console.log(parseInt("")) //NaN
3.parseFloat()方法
语法:parseFloat(string)
参数:string
必需。要被解析的字符串。
作用:解析一个字符串,并返回一个十进制浮点数。
注意:
- 字符串中只返回第一个数字。
- 开头和结尾的空格是允许的。
- 如果字符串的第一个字符不能被转换为数字,那么
parseFloat()
会返回NaN
。
console.log(parseFloat("10")) //10
console.log(parseFloat("10.33")) //10.33
console.log(parseFloat("34 56 78")) //34
console.log(parseFloat(" 60 ")) //60
console.log(parseFloat("40 years")) //40
console.log(parseFloat("he was 40")) //NaN
console.log(parseFloat("")) //NaN
三者区别
Number()
:可以用于任何数据类型;parseInt()
和parseFloat()
:主要针对把字符串转换成数值。parseInt()
存在基模式,parseFloat()
不存在。
4.隐式转换
- 数学运算:使用运算符减、乘、除的其中一种,在不改变原值的情况下,和
number
类型的值做运算。
- 若字符串中的是纯数字,则直接返回该数值
- 若字符串中不是纯数字,则返回
NaN
- 若字符串为空,则返回0
- 转换布尔型,则
true
返回1,false
返回0 - 转换
undefined
,则返回NaN
console.log("123"-2) //121
console.log("123aa"-2) //NaN
console.log(""-2) //-2
console.log(false-2) //-3
console.log("true"-2) //-1
console.log("undefined"-2) //NaN
- 添加
+、-
号
console.log(+"123") //123
console.log(-"10") //10