js 中的不同的数据类型之间作比较时的“隐式转换规则”

一、js 隐式转换规则

1. javascript 隐式转换规则

隐式类型转换是在一定场景下,js 运行环境自动调用这几个方法,尝试转换成期望的数据类型

  • ToString
  • ToNumber
  • ToBoolean
  • ToPrimitive

注:有关 javascript 隐式转换规则详情,可参考 Javascript基础:隐式类型转换

2.两个数据比较的情况

两个数据比较时,如果两边数据不是同种类型的话,按以下规则进行相应的隐式类型类型转换

  • 对象 --> 字符串 --> 数值
  • 布尔值 --> 数值

注:有关两个数据相加的情况,可参考 “加号 +” 的运算原理(详细!!!)
  有关隐式转换规则的坑点详细分析,可参考 js面试题大坑——隐式类型转换

二、具体分析(六种基本情况 + 三种特殊情况)

1. 对象和字符串比较

① 说明

隐式转换规则:调用 ToPrimitive() 内部函数,将对象转换为字符串,然后两者进行比较。
注:在 js 中,想要将对象转换成原始值,必然会调用 toPrimitive() 内部函数。
  ① 有关 ToPrimitive() 方法,可参考 JS原始值转换算法—toPrimitive()
  ① 有关 valueOf() 方法,可参考 JS 中 valueOf() 方法的详解
  ① 有关 toString() 方法,可参考 有关 toString() 方法的初步认识

② 示例
	// 数组(Array)对象和字符串比较
	[1,2,3] == '1,2,3'	// true  

隐式转换过程:

  • 对左边的数组对象进行隐式转换 ToPrimitive([1,2,3]) -> '1,2,3'
  • 然后和右边的 '1,2,3' 比较,易得结果为 true
	// Object 对象和字符串比较
	let obj = {
   a:1}
	obj == '[object Obje
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C澒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值