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