美文网首页
Javascript '=='和'==='的区别

Javascript '=='和'==='的区别

作者: Accepted_ | 来源:发表于2020-09-06 20:50 被阅读0次

    1、===:称为等同符(严格运算符)。比较值和类型。
    当两边值的类型相同时,直接比较值,若类型不相同,直接返回false;

    2、==:称为等值符(相等运算符)。只比较值。
    当等号两边的类型相同时,直接比较值是否相等,若不相同,则【先转化为类型相同的值】再进行比较;

    3、undefined和null和自身严格相等

    undefined === undefined //true
    null === null  //true
    

    需要注意相等运算符'=='的缺点:
    相等运算符隐藏的类型转换,会带来一些违反直觉的结果。

    '' == '0' // false
    0 == '' // true
    0 == '0' // true
    
    false == 'false' // false
    false == '0' //true
    
    false == undefined // false
    false == null // false
    null == undefined // true
    
    ' \t\r\n ' == 0 // true
    

    还有,==会在比较之前做一次类型转换,所以它可能会有副作用。(如果覆写某个对象的valueOf/toString的话)

    建议尽量使用'==='来比较,以保万全。


    另,知乎链接中有个人提到,难道==就一无是处吗?并不是。比如你想判断一个字符串看起来是不是空白的(由空白字符组成),可以这样写:

    if (typeof str === "string" && str == false)
      console.log("The string is full of white spaces!");
    

    资料来源:
    三个等号和两个等号的区别(“===”和“==”)
    Javascript 中 == 和 === 区别是什么? - 知乎

    相关文章

      网友评论

          本文标题:Javascript '=='和'==='的区别

          本文链接:https://www.haomeiwen.com/subject/ssfhektx.html