本文最后更新于 37 天前,其中的信息可能已经过时,如有 错误/失效 请发送邮件到wenwanfj@gmail.com或留言。
类型转换是将某个数据转换为其他类型的数据的操作。
可以参考表格
值 | 字符串操作环境 | 数字运算环境 | 逻辑运算环境 | 对象操作环境 |
---|---|---|---|---|
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) // 将a转换为字符串
let r2 = Boolean() // 将a转换为布尔值
let b = "123"
let r3 = Number(b) // 将b转换为数字,请注意,如果字符串内不全是数字字符时会转换成坏值NaN
let r4 = Boolean(b) // 将b转为布尔值
// 布尔值转换为数字时,true转为1 false转为0,转为字符串时相当于给对应的值加上引号
以上通过对应的数据类型的接口转换的方式叫显示类型转换
隐式类型转换
隐式转换是在使用非上面的接口转换时的叫法,通常这些转换情况容易被人忽略,所以叫隐式转换
1. 转数字
let a = '123' // 此时a是字符串,而不是数字
a++ // 此时 a = 124,
同时在比较大于、小于、小于等于、大于等于时,有数字参与的比较,也会将另外一个非数字转换为数字
2.转字符串
当有字符串参与的加法运算时,非字符串数据会被转换成字符串,然后将两个字符串合并
let a = "123"
let b = true
let c = a + b
// c = "123true"