-
小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
-
之前用三篇写了一些关于JavaScript类型的文章
-
有了这么多的类型以及
JavaScript
本身的对象设计,接下来就是类型转换了
类型转换
基本类型转换为对象类型
- 每一种基本类型(
Number
、Boolean
、String
、Symbol
)在对象中都有对应的类 - 基本类型在转换成对象时会先生成一个临时对象,然后转换成要转换的类型的对象。建议不要在代码中过多的做此类的转换,根据使用场景,该使用什么类型使用什么类型。
- 基本类型在对象中对应的类型,都有私有
class
属性,并且不可更改,通过Object.prototype.toString
获取。但是在识别这种类型的时候,要先判断是基本类型还是对象类型。
对象类型转换为基本类型
- 对象到
String
和Number
的转换:先转从对象类型转为基本类型,然后在转成Number
或者String
- 从对象类型转为基本类型,一般是尝试调用
valueOf
和toString
。 - ES6之后,可以允许对象显式地指定
Symbol.toPrimitive
覆盖原有的转换
常见的基本类型之间的转换
StringToNumber
- 支持二进制、十进制、八进制、十六进制的转换
- 支持包含正负号的科学计数法
- 需要与
parseInt
/parseFloat
区分,parseInt
/parseFloa
t并不适用这个规则,并且参数也不同。
隐式转换
==
运算- 跨类型的比较运算符,在比较的时候会对对象进行隐式转换,产生不正确的结果。还是显式的转换后用
===
运算来比较
- 跨类型的比较运算符,在比较的时候会对对象进行隐式转换,产生不正确的结果。还是显式的转换后用
总结
我知道的JavaScript
的类型转换就这些了,有补充或者对JavaScript
类型转换有不同想法的,欢迎留言讨论。