js判断2个值是否相等的规则

假设需要判断的是 x==y?

1. 如果 x 不是正常值(比如抛出一个错误),中断执行。
2. 如果 y 不是正常值,中断执行。
3. 如果 Type(x) 与 Type(y) 相同,执行严格相等运算 x === y 。
4. 如果 x 是 null , y 是 undefined ,返回 true5. 如果 x 是 undefined , y 是 null ,返回 true6. 如果 Type(x) 是数值, Type(y) 是字符串,返回 x == ToNumber(y) 的结果。
7. 如果 Type(x) 是字符串, Type(y) 是数值,返回 ToNumber(x) == y 的结果。
8. 如果 Type(x) 是布尔值,返回 ToNumber(x) == y 的结果。
9. 如果 Type(y) 是布尔值,返回 x == ToNumber(y) 的结果。
10. 如果 Type(x) 是字符串或数值或 Symbol 值, Type(y) 是对象,返回 x == ToPrimitive(y) 的结果。
11. 如果 Type(x) 是对象, Type(y) 是字符串或数值或 Symbol 值,返回 ToPrimitive(x) == y 的结果。
12. 返回 false复制代码

其中,ToPrimitive(obj)等价于:先计算obj.valueOf(),如果结果为原始值,则返回此结果;否则.计算obj.toString(),如果结果是原始值,则返回此结果;否则,抛出异常

转载于:https://juejin.im/post/5cc6ee28e51d456e4e0886d4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值