美文网首页
详解if(statement)以及A==B判断原则

详解if(statement)以及A==B判断原则

作者: innerwang | 来源:发表于2018-12-10 11:09 被阅读0次

    · if(statement)

    对于括号中的statement,会被强制转换为布尔类型,再进行判断。

    对于六种数据进行转换后的结果如下:

    数据类型 条件判断结果
    Undefined false
    Null false
    Boolean 直接进行判断
    Number +0,-0,或者NaN都为false,其余为true
    String 空字符串为false,其余为true
    Object true

    如上,在进行if条件判断时,遵循上述原则,则可得到最终结果。

    · A==B

    对于三种基本数据类型以及复杂类型之间的判等比较,都是先调用toNumber()toPrimitive()方法转换为数值,再进行比较,其余的情况则为确定结果。

    不同数据类型之前的判等比较原理如下:

    A的数据类型 B的数据类型 判等转化
    Number String A==toNumber(B)
    Boolean (any) toNumber(A)==B
    Object String / Number toPrimitive(A)==B
    null undefined true
    otherwise otherwise false

    不同数据类型调用toNumber()方法得到的结果如下表:

    数据类型 结果
    undefined NaN
    Null 0
    Boolean true得到1,false得到0
    String "abc"得到NaN,"123"得到123

    Object 调用toPrimitive()方法时,会先尝试调用.valueOf方法获取结果,若未定义,则会尝试调用.toString方法获取结果。

    相关文章

      网友评论

          本文标题:详解if(statement)以及A==B判断原则

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