你真的理解 == 吗?

== 与 ===

我们都知道两者区别在于,检查值是否相等,而=检查值和类型是否相等。更精确点就是==检查的是允许类型转换情况下的值的相等性,===检查不允许类型转换情况下的值的相等性。

== 类型转换细节

我总结了==中几点重要的特例,如果想看全部细节可以到 es5规范 11.9.3

对于x == y来说

  • 当x,y类型相等时,x == y 与 x === y没有区别。
  • 模糊了null和undefined,即 null == undefined 结果为true。
  • 当x为Boolean时,会将x转为Number 即 ToNumber(x) == y;
true == 1 //true
'1' == true  //true
true ==99 //false
0 == false//true
false =='0' //true
  • 当x为String,y为Number,会将x转为Number,即 ToNumber(x) == y; 相反也成立
  • 当x,y都为引用类型,只会简单的比较引用地址
var a=[1,2,3];
var b=[1,2,3];
var c="1,2,3";

a ==b //false
a === b //false

  • 数组默认情况下会转换为字符串
var a=[1,2,3];
var b=[1,2,3];
var c="1,2,3";

a == c //true
b == c //true
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值