JS中==的判断原理

8 篇文章 0 订阅
6 篇文章 0 订阅

JS中==的判断原理

判断规则

遇到两个操作数不同类型时会先尝试着转换成相同的类型再比较,其转换规则如下:

1、只要有一个操作数是布尔值,则先将该布尔值转成数字类型,(false => 0, true => 1);

2、如果一个操作数是字符串,另一个是数字类型,则把字符串转成数字类型;

3、有一个操作数是对象的话,另一个不是,则尝试着将对象转成基本类型值。(一般情况下会依次调用valueOf,和toString,只要能得到基本类型值即可);

4、两个操作数都是对象的话,则比较它们是不是指向同一个对象即可;

5、操作数是null 或 undefined 的话不进行转换;

每条规则之间都是一定的联系的。

如果有一个操作数是 false,那么另一个操作数就是 字符串,数字类型,null,undefined,对象的其中一种(当然也可能也是布尔值),这时匹配到第1条规则,二话不说先将false转成数字0,那么就变成了下面这几种可能的情况:

0 == 字符串 (匹配到第2条规则)
0 == 数字类型 (直接比较了)
0 == null,undefined (匹配到第5条规则)
0 == 对象 (匹配到第3条规则)
每条规则都可能是由其他规则推算出来的,每一条规则并非都是独立的,JS规定null和undfined永远相等,因为undfined是null衍生出来的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值