js中‘==’和‘===’的区别 详解

看一下代码打印结果: 

   console.log(1 == true);  //true
   console.log(undefined == null)  //true
   console.log(1 == '1');  //true
   console.log([1, 2, 3] == '1,2,3');  //true

你们会发现,他们都是true,为什么会这样的 这就涉及到原理了,其实==它比较的是值 只要值相同他就是true,而以上情况会涉及到一个Object的一个方法 然后形成隐式转换,那么这个转换是什么时候触发的呢再看一个代码

let a = [1,2]
    let b = '1,2'
     if (a = b) {
          console.log(typeof b);  //string
     }

你会发现它是string 这里就会有疑问 不是已经隐式转换了吗,为什么转换之后还是string呢,其实这也是原理  它转换时用Object中valueof()方法来转换的 ,而它的这个方法是js再后台自动执行的方法 ,不会再代码中显示出来的 这面一个代码会看到很清晰:

 

你把valueOf方法重写 或者 执行到这里直接return掉  不让他隐式转换 你就会发现他是一个false,所以这篇文章也就是一个小提示,如果大家作比较的时候一定要记住 用‘===’ 的方式来判断,避免会出现很多的问题等等

=== 也就不用说了 他会比较值,也会比较数据类型,这就不用多说了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值