美文网首页
JavaScript == 相等运算符自动转换的4种简单情形

JavaScript == 相等运算符自动转换的4种简单情形

作者: tutututudou | 来源:发表于2022-02-18 14:19 被阅读0次

    情景1:比较数字和字符串

    比较数字和字符串时,都要将字符串转换为数据,再两个数字进行比较

    比如无法转换为数字,是字符串转换为NaN

    99 == "what" 
    99 == NaN
    false 
    
    

    因为用== 试图将 what 字符串转换为数字,结果是NaN,NaN和任何东西都不相等,最终结果为false

    情景2:比较布尔值和其它类型

    将布尔值转换为数字,再进行比较

    true 转换为1,false转换为0

    1 == true
    1 == 1
    true
    
    

    ** 布尔值和一字符串比较 **

    "1" == true
    "1" == 1
    1 == 1
    true
    

    字符串转换为数字,布尔值转换为数字

    情景3:比较null和undefinded

    这两个值比较的结果都是true
    undefinded == null 
    true
    

    情景4:

    对象的比较后面介绍,个别情况
    1 == ""
    1 == 0
    false
    

    ""这是数字和一个字符串比较,这个字符串时空的,不是NaN,而是0,虽然字符串和数字比较都是false

    总结:

    1.如果两个值的类型相同,就直接进行比较

    2.如果两个值的类型不同,则尝试将他们转换为相同的类型,再进行比较

    所有不同类型都要转换为数字才能进行比较

    1.字符串转换为数字时,都是为NaN,空的字符串为0
    2.NaN不等于任何类型任何值,包括本身

    3.undefinded和null比较结果都是true,表示都是"没有值",这是个特殊的,他们两比较的时候都是true ,没有转换为布尔值或是数字什么的

    • undefinded和null or 本身比,为true
    • null 和undefindedor 本身比,为true
    undefined == 1
    false
    undefined == 0
    false
    null == 1
    false
    null ==  0
    false
    undefined == undefined
    true
    null == null
    true
    NaN == undefined
    false
    NaN == null
    false
    NaN == 1
    false
    NaN == 0
    false
    1 == true
    true
    0 == false
    true
    0 == '0'
    true
    '' == '0'
    false // 是因为这是两个字符串比较,他们的类型相等,不需要进行转换为数字了,违背总结第一条
    0 == ''
    true // ''为0
    false == 'false'
    false  // 'false' 为NaN
    false == '0'
    true
    false == undefined
    false
    false == null
    false
    '\t' == 0
    true //'\t' 为''
    '\n' == 0
    true // '\n' 为''
    '\r' == 0
    true // '\r' 为''
    

    相关文章

      网友评论

          本文标题:JavaScript == 相等运算符自动转换的4种简单情形

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