关于‘= =’和‘ = = =’的区别

关于‘= =’和‘ = = =’的区别

错误的理解:

==:检查值是否相等

===:检查值和类型是否相等

正确的理解:

==:宽松相等

===:严格相等

什么是宽松相等

==在比较的时候会进行隐式强制转换,会讲其中的一个或两个值变为同一种类型进行比较

例如:

字符串转number

    var a = 11,b = '11'
    console.log(a==b); // true
    console.log(a===b);// false

布尔值和字符串比较,在比较==的时候将b转换为number类型1,然后布尔值也转换为number类型 1

    var a = true,b = '1'
    console.log(a==b); // true
    console.log(a===b);// false

undefined和null比较,null只与自身相等或undefined,而非其他值!(NaN也是)

    var a = undefined,b = null
    console.log(a==b); // true
    console.log(a===b);// false

其中,NaN!==NaN

    var a = NaN,b = NaN
    console.log(a==b); // false
    console.log(a===b);// false

其中对象(引用数据类型)格式也可以进行隐式强制类型转换

    var a = 1,b = [1]
    console.log(a==b); // true
    console.log(a===b);// false

但是undefined不能被封装

    var a = 1,b = Object(a)
    console.log(a==b); // true
    console.log(a===b);// false

还有一些其他的抽象的例子

    <script>
      "0" == null; //false
      "0" == undefined; //false
      "0" == false; //true
      "0" == NAN; //false
      "0" == 0; //true
      "0" == ""; //false

      false == null; //false
      false == undefined; //false
      false == NAN; //false
      false == 0; //true
      false == ""; //true
      false == []; //true
      false == {}; //false

      "" == null; //false
      "" == undefined; //false
      "" == NAN; //false
      "" == 0; //true
      "" == []; //true
      "" == {}; //false

      0 == null; //false
      0 == undefined; //false
      0 == NAN; //false
      0 == []; //true
      0 == {}; //false
    </script>

1、!表示进行隐式强制转换为布尔型,再取反,而[]的布尔值为true,!true的话就是false

2、所以就是[]==false

3、这里[]类型转换为Number就是0,false也是0,0==0,自然返回的就是true

    var a = ![],b = []
    console.log(a==b); // true
    console.log(a===b);// false
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值