美文网首页
if 判断和 == 判断

if 判断和 == 判断

作者: 饥人谷_LS | 来源:发表于2018-06-06 22:57 被阅读0次

    if(xx) 判断

    什么是 if(xx) 判断?

    所谓的 if(xx) 判断,即是对括号中的 xx 或者说表达式通过布尔值判断结果。当然也有不是布尔值的时候,这时就会将表达式强制转换为布尔值之后进行判断。

    原理

    类型 结果
    Undefined false
    Null false
    Boolean 直接判断
    Number +0,-0或者 NaN 为 false,其他为 true
    String 空字符串为 false,其他为 true
    Object true

    a==b 判断

    a==b 判断的两个规则

    • 如果两个值类型相同,则执行严格相等的运算;
    • 如果两个值类型不同:
      (1)如果一个是 null,一个是 undefined,则二者相等;
      (2)如果一个是数字,一个是字符串,则将字符串转换成数字后再比较;
      (3)如果一个值是 true/false,则将其转换为1/0比较;
      (4)如果一个值是对象,一个是数字或字符串,则尝试使用 .valueOf 和 .toString 转换后比较;
      (5)其他的就都不相等了。

    原理

    x y 结果
    Null Undefined true
    Number String x == toNumber(y)
    Boolean (any) toNumber(x) == y
    Object String or Number toPrimitive(x) == y
    otherwise otherwise false

    toNumber

    type result
    Undefined NaN
    Null 0
    Boolean true -> 1,false -> 0
    String "abc" -> NaN,"123" -> 123

    toPrimitive

    对于 Object 类型,先尝试调用 .valueOf 方法获取结果,如果没有定义,再尝试调用 .toString 方法获取结果。

    相关文章

      网友评论

          本文标题:if 判断和 == 判断

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