美文网首页
Javascript中 if(xx)和 a==b的判断

Javascript中 if(xx)和 a==b的判断

作者: 偏左的右 | 来源:发表于2019-07-10 15:16 被阅读0次

    javascript中,if判断语句跟别的语言一样,符合其判断条件就执行区块里的代码,不符合就跳到别的if区块判断,都没有,就接着往下执行。

    if(xx){
    }
    或
    if(x==x){
    }
    

    然而,js的if(xx)和==在判断时,会对不同数据类型 做类型转换,很是令人头晕,所以建议
    能用===,就用,能同时判断类型;能在判断前,手动转换类型,就转。两者会更容易。

    但作为面试常考题目,和coding时要处理的极端状况(比如 改别人的bug),js中==的类型转换,还是值得学习的。
    所以,下面总结了所有if和==的判断规律,经常查阅,练出直觉,便也不头晕了。

    if(xx)

    首先,若if(xx)括号内是个数值,if来判断xx数值的规律,如下:

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

    if(x==x)

    首先,==两边的不同情况 会进行如下的判断:

    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和toPrimitive如何做数据类型转换,如下:

    toNumber

    type Result
    Undefined NaN
    Null 0
    Boolean ture -> 1, false -> 0
    String “abc” -> NaN, “123” -> 123 (" "内不管几个空格,都转为0)

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

    相关文章

      网友评论

          本文标题:Javascript中 if(xx)和 a==b的判断

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