JS类型转换(强制类型转换,隐式类型转换)
类型转换有两种:
一种是显式转换(强制类型转换),即需要程序员手动写代码强制转换;
另一种是隐式转换(隐式类型转换),由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
2 . 如果是数字值,返回本身。
3 、如果是null,返回 0
4 、如果是undefined,返回NaN
5、如果是字符串,遵循以下规则:
- 如果字符串中只包含数字,则将其转换为十进制(忽略前导0)
- 如果字符串中包含有效的浮点格式,将其转换为浮点数值(忽略前导0)
- 如果是空字符串,将其转换为 0
- 如果字符串中包含非以上格式,则将其转换为NaN
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)函数
这个方法是专门用于把字符串转换成 整数 的,非字符串参数会首先被强制转换为字符串,它的基本转换规则:
- 忽略字符串前面的空格,直至找到第一个非空字符
- 如果第一个字符不是数字符号或者负号,返回NaN
- 如果第一个字符是数字,则继续解析直至字符串解析完毕或者遇到一个非数字符号为止
- 如果指定radix参数,则以radix为基数进行解析
- parseInt(0.0000007);解析过程 0.0000008 => “8e-7” => 8
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、-0 、NaN
'' ""
除上述之外的所有值,都是可以被转换为 true 的值
上一篇: Redis 集群架构
下一篇: 2. C语言 -- 打印