美文网首页
JS中==、===你分清楚了吗?

JS中==、===你分清楚了吗?

作者: 羞羞的王大锤 | 来源:发表于2020-03-03 23:20 被阅读0次

    ==、===都是相等运算符,这个大家应该都知道,但二者有什么区别呢?其实==是相等,===是严格相等,那他们有什么本质的区别呢?下面我就给大家细细道来。

    ==相等

    比较两个值的时候,有两种情况,一种如果两个值的类型相同,就直接比较;另一种如果两个值得类型不同,则会尝试改变为相同的类型在进行比较
    第一种很好理解,直接比较完事儿,第二种就更有趣一些,它到底是怎么转换的呢?下面我们一一列举

    数字和字符串比较

    99 == ''99"
    

    大家猜一猜结果是什么True?False?

    结果为True

    其实JS在数字和字符串比较时,都是把字符串转换为数字,再对数字进行比较的,举个列子

    99 == "chuichui"
    

    JS是怎么转换的呢?

    99 == NaN  // false
    

    JS尝试转换字符串'chuichui',但是该字符串并不能转换为数字,这时候转换的结果就为NaN

    布尔值和其他类型比较

    其实JS在布尔值和其他类型比较时,都是把布尔值转换为数字,再进行比较的,举个列子

    1 == true
    ↓↓↓↓↓↓
    1 == 1
    

    JS会将true转化为数字1,再做比较
    那"1" == true又是怎么比较的呢?

    "1" == true
    ↓↓↓↓↓↓
    "1" == 1
    ↓↓↓↓↓↓
    1 == 1 // true
    

    转换顺序

    1. 将true转换为1
    2. 将字符串“1”转换为数字1
    3. 数字1和数字1比较

    null和undefined比较

    null == undefined 
    

    大家猜一猜,结果是True?False?

    结果为True

    是不是感觉很奇怪,但规则就是这样。我们可以理解为都是“没有值”
    只不过一个是没有值得变量,一个是没有值的对象,因此他们相似

    小心

    有一个需要注意的地方,有些转换你可能猝不及防

    false == ""
    

    True?False?

    结果为True
    转换过程

    1. false转化为0
    2. 空字符串""转换为0,没错就是0 !
    3. 数字0和数字0比较

    下面我们在说说严格相等 ===

    ===严格相等

    有了前面的相等的定义,我想大家能猜个八九不离十,严格相等就是类型和值完全相同,这里不存在以上所存在的转换问题

    最后 🙌

    好啦,以上就是我本次分享的全部内容啦,如果你觉得我的文章对你有一丢丢帮助,那么请不要吝啬你的赞👍哦,阿门~

    相关文章

      网友评论

          本文标题:JS中==、===你分清楚了吗?

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