JS数据类型转换(2)

在上一篇的js数据类型转换(1)中,只考虑了基础数据类型之间的相互转换,未考虑对象和基础类型的转换,本篇做介绍。

基础类型转对象

基础类型可以通过对应的构造函数转换为对应的对象类型,不做赘述。

对象转基础类型规则

1. 对象转布尔

所有对象转换为布尔值时,结果都为true。

2. 对象转字符串

对象转换为字符串时,会先调用对象的toString()方法,如果该方法返回原始值,则返回该原始值的字符串值;如果没有toString()方法或者该方法返回的不是原始值,则会调用valueOf()方法,如果该方法返回原始值类型,则返回该原始值的字符串值;如果没有valueOf()方法或者该方法返回的不是原始值,则抛出类型异常的错误。

3. 对象转数值

对象转换数值时,逻辑与对象转字符串相似,只是会先尝试调用valueOf()方法,再尝试调用toString()方法。


上述规则中,如果对象有Symbol.toPrimitive属性的话,会优先调用,它的优先级最高。

隐式类型转换中对象转基础类型的规则

1. +

如果一个是对象,另一个是数字或字符串,则将对象转为原始值再计算(日期类型转为字符串,其他的先尝试调用valueOf()方法再尝试调用toString()方法转换为原始值);如果都是对象,则先尝试调用valueOf()方法再尝试调用toString()方法转换为原始值再计算。

2. -(一元运算符)

转换为数字再计算。

3. >,<,>=,<=,==

比较运算符两边都会转换为数字或者字符串进行比较。两边的任一对象都会先尝试调用valueOf()方法转换为原始值,再尝试调用toString()方法转换为原始值,如果原始值都是字符串类型,则进行字符串的比较;如果有一个为数字类型,则另一个也转换为数字,进行比较。

4. -,*,/,%

转换为数字进行计算。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,195评论 0 13
  •   引用类型的值(对象)是引用类型的一个实例。   在 ECMAscript 中,引用类型是一种数据结构,用于将数...
    霜天晓阅读 1,083评论 0 1
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,265评论 0 4
  • 强制转换 强制转换主要指使用Number、String和Boolean三个构造函数,手动将各种类型的值,转换成数字...
    灯火阑珊Zone阅读 467评论 0 3
  • 时光,流动
    子之雾阅读 127评论 0 0