js中其他值转数值

167 阅读2分钟

1. 字符串转数值

1.1 转换方法

1.1.1 parseInt()、parseFloat()

一个转整数,一个转浮点。

parseInt(string, radix)

string是要被解析的值。

radix是介于2和36之间的整数,表示上述字符串的基数(进制)。当未指定基数时,不同的实现会产生不同的结果,通常将值默认为10

【返回值】 返回解析后的整数值。

  • 如果被解析参数的第一个字符无法被转化成数值类型,则返回 NaN。
  • 反之,解析按从左到右的顺序,如果遇到非数字字符就停止。
parseInt(18,10) //18 10表示使用我们通常使用的十进制数值系统
parseInt(18) //18

如果参数不是一个字符串,则将其转换为字符串(使用 toString)(这也是为什么string输入的是数字如18,也能正确解析的原因)。字符串首尾的空白符将会被忽略。

parseInt('  18',10)   //18
parseInt('x123ddw')   //NaN
parseInt('123ddw11.2')   //123

1.1.2 Number()

运算判断时的转化规则

  • 如果为纯数字的字符串,则直接将其转换为数字(字符串首尾的空格将被忽略)
  • 如果字符串中有非数字的内容,则转换为NaN(not a number)
  • 如果字符串是空串全是空格的字符串,则Number('')或Number(" ")--->0

1.2 方法对比

Number()的转换要比parseInt()更严格。

1.2.1 共同点

字符串首尾的空格都将被忽略。 Number()中字符串中间若出现空格,将被视为非数字字符处理,返回值为NaN。

1.2.2 不同点

Number()中字符串中间若出现非数字字符,则返回NaN;

parseInt()中字符串中间若出现非数字字符,解析按从左到右的顺序,如果遇到非数字字符就停止,返回前面解析到的内容。

2. Undefined 类型的值转换为 NaN

3. Null 类型的值转换为 0

4. Boolean 类型的值,true 转换为 1,false 转换为 0

5. Symbol 类型的值不能转换为数字,会报错

6. 对象类型

  • 如果对象具有valueOf()方法,后者返回一个原始值,则JavaScript将这个原始值转换为数字(如果需要的话)并返回一个数字。
  • 否则,如果对象具有toString()方法,后者返回一个原始值,则JavaScript将其转换并返回。(对象的toString()方法返回一个字符串直接量(原始值),JavaScript将这个字符串转换为数字类型,并返回这个数字)。
  • 否则,JavaScript抛出一个类型错误异常。