类型转换
类型转换是将某个数据转换为其他类型的数据的操作。
可以参考表格
值 | 字符串操作环境 | 数字运算环境 | 逻辑运算环境 | 对象操作环境 |
---|
undefined | “undefined” | NaN | false | Error | null | “null” | 0 | false | Error | 非空字符串 | 不转换 | 字符串对应的数字值 | True | | 空字符串 | 不转换 | 0 | false | String | 0 | “0” | 不转换 | false | Number | NaN | “NaN” | 不转换 | false | Number | Infinity | “Infinity” | 不转换 | true | Number | Number.POSITIVE_INFINITY | “Infinity” | 不转换 | true | Number | Number.NEGATIVE_INFINITY | “-Infinity” | 不转换 | true | Number | Number.MAX_VALUE | “1.7976931348623157e+308” | 不转换 | true | Number | Number.MIN_VALUE | “5e-324” | 不转换 | true | Number | 其他所有数字 | “数字的字符串值” | 不转换 | true | Number | true | “true” | 1 | 不转换 | Boolean | false | “false” | 0 | 不转换 | Boolean | 对象 | toString() | value()或toString()或NaN | true | 不转换 | Symbol | toString() | Error | true | Symbol | BigInt | toString() | 不转换 | 除0n都是true | BigInt |
显示类型转换
转换方法:
- 转数字:
Number() - 转字符串:
String() - 转布尔值:
Boolean() - 转字符:
Symbol() 基本没有该需求 - 转大数字:
BigInt()
常见需求是在数字、布尔值、字符串三者之间进行转换
let a = 1
let r1 = String(a)
let r2 = Boolean()
let b = "123"
let r3 = Number(b)
let r4 = Boolean(b)
以上通过对应的数据类型的接口转换的方式叫显示类型转换
隐式类型转换
隐式转换是在使用非上面的接口转换时的叫法,通常这些转换情况容易被人忽略,所以叫隐式转换
1. 转数字
let a = '123'
a++
同时在比较大于、小于、小于等于、大于等于时,有数字参与的比较,也会将另外一个非数字转换为数字
2.转字符串
当有字符串参与的加法运算时,非字符串数据会被转换成字符串,然后将两个字符串合并
let a = "123"
let b = true
let c = a + b
|