欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JS类型转换(强制类型转换,隐式类型转换)

程序员文章站 2022-07-15 10:09:50
...

类型转换有两种:

一种是显式转换(强制类型转换),即需要程序员手动写代码强制转换;

另一种是隐式转换(隐式类型转换),由JavaScript解释器自动转换。

JavaScript提供以下函数进行显式转换:
1. 转换为数值类型:Number(mix)、parseInt(string,radix)、parseFloat(string)
2. 转换为字符串类型:toString(radix)、String(mix)
3. 转换为布尔类型:Boolean(mix)

(一)转换为数值类型

Number(mix)函数

Number(mix)函数,可以将任意类型的参数 mix 转换为 数值 类型。其规则为:
1 . 如果是 Boolean 值,true 和 false 将分别被转换为 1 和 0
JS类型转换(强制类型转换,隐式类型转换)
2 . 如果是数字值,返回本身。
JS类型转换(强制类型转换,隐式类型转换)
3 、如果是null,返回 0
4 、如果是undefined,返回NaN
JS类型转换(强制类型转换,隐式类型转换)
5、如果是字符串,遵循以下规则:

  1. 如果字符串中只包含数字,则将其转换为十进制(忽略前导0)
  2. 如果字符串中包含有效的浮点格式,将其转换为浮点数值(忽略前导0)
  3. 如果是空字符串,将其转换为 0
  4. 如果字符串中包含非以上格式,则将其转换为NaN
    JS类型转换(强制类型转换,隐式类型转换)
    6、如果是对象,会首先检查该值是否有 valueOf() 方法。如果有,并且可以成功返回基本类型值,那么就使用该方法的返回值进行强制类型转换;如果没有就使用 toString() 的返回值来进行强制类型转换。如果 valueOf() 和 toString() 均不返回基本类型值,会产生 TypeError 错误。
//转换过程:{name: "Tom"} => "[object Object]" => NaN
console.log(Number({name: "Tom"})); //输出:NaN
//转换过程:[1,2] => "1,2" => NaN
console.log(Number([1, 2])); //输出:NaN
//转换过程:[999] => "999" => 999
console.log(Number([999])); //输出:999
//以微秒为单位的数字时间,时间戳
console.log(Number(new Date())); //输出:1604908061814

parseInt(string, radix)函数

这个方法是专门用于把字符串转换成 整数 的,非字符串参数会首先被强制转换为字符串,它的基本转换规则:

  1. 忽略字符串前面的空格,直至找到第一个非空字符
  2. 如果第一个字符不是数字符号或者负号,返回NaN
  3. 如果第一个字符是数字,则继续解析直至字符串解析完毕或者遇到一个非数字符号为止
  4. 如果指定radix参数,则以radix为基数进行解析
  5. parseInt(0.0000007);解析过程 0.0000008 => “8e-7” => 8
    JS类型转换(强制类型转换,隐式类型转换)

parseFloat(string)函数

parseFloat(string)函数,将字符串转换为浮点数类型的数值。用法基本和 parseInt 一样,但也有点区别:字符串中第一个小数点符号是有效的,除此之外,parseFloat() 方法只能解析十进制数

(二)转换为字符串类型

toString() 方法

数字、布尔值、字符串和对象都有 toString() 方法,但 null 和 undefined 没有。

String() 方法

这个方法能够将任何类型的值转换为字符串,基本的转换规则是:
1、如果值有toString()方法,则调用该方法进行转换;
2、如果值是null,则返回'null'
3、如果值是undefined,则返回'undefined'

(二)布尔值的类型转换

Boolean() 方法

可以对任何数据类型的值调用 Boolean() 方法,而且总会返回一个 Boolean 值,基本的转换规则是:
以下这些是可以被转换为 false 的值

undefined
null
false
+0-0NaN
''  ""

除上述之外的所有值,都是可以被转换为 true 的值

相关标签: 前端 javascript