-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Null | Undefined | Boolean(true) | Boolean(false) | Number | String | Symbol | Object | "" | 0 | |
---|---|---|---|---|---|---|---|---|---|---|
Boolean | False | False | - | - | true 1 false 0 |
true | true | true | False | False |
Number | 0 | NaN | 1 | 0 | - | StringToNumber | TypeError | 拆箱转换 | 0 | 0 |
String | "null" | "undefined" | "true" | "false" | NumberToString | - | "Symbol(***)" | 拆箱转换 | "" | "0" |
Object | {} | {} | 装箱转换 | 装箱转换 | 装箱转换 | 装箱转换 | 装箱转换 | - | 装箱转换 |
StringToNumber
- 字符串到数字的类型转换,存在一个语法结构,支持十进制、二进制、八进制和十六进制比如:
"30" "0b111" "0o13" "0xFF"
- 判断是否 NaN ,如果不是 NaN.
- 判断是否有科学计数法.
"1e3" "-1e-2"
- 判断是否有正负号.
在字符串转换数字的过程中最好使用
parseInt
,parseFloat
来转换其它进制。
NumberToString
- 判断是否十进制、二进制、八进制和十六进制.
2.判断符号.
3.判断科学质法.
4.参照日常理解.
装箱转换 和 拆箱转换
装箱转换
如果在基础类型直接执行方法时,因为每一种基本类型 Number、String、Boolean、Symbol 对有对应的类,所以装箱时会把基本类型转换为对应的对象类型,再进行方法执行,称为装箱转换。
拆箱转换
- 拆箱转换即把对象类型转换为基本类型转换。
在 JavaScript 标准中,规定了 ToPrimitive 函数,它是对象类型到基本类型转换的实现者(即,拆箱转换);但这是一个内部算法,是编程语言在内部执行时遵循的一套规则。
对象到 String 和 Number 的转换都遵循“先拆箱再转换”的规则。通过拆箱转换,把对象变成基本类型,再从基本类型转换为对应的 String 或者 Number。
- 在拆箱转换的过程中,在ES6后会检查对象中是否有显式定义的
[Symbol.toPrimitive]
方法,如果有直接调用。 - 如果没有
ToPrimitive
则判断调用对象的toString
和valueOf
方法,来转化为Primitive Value
。 - 由于不同基础类型调用的
toString
和valueOf
顺序不同,具体可以查阅 ECMA 规范。
Metadata
Metadata
Assignees
Labels
No labels