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

if判断和==判断解秘

作者: yhldqt | 来源:发表于2018-03-24 21:14 被阅读0次

    1.if判断

    if(xxx){
    
    }
    

    在js中,if括号里的表达式,会被强制转换为布尔类型

    // 例1:如下代码输出什么?
    if ("hello") {
        console.log("hello")
    }
    // 答案:判断为true,输出hello
    
    // 例2:如下代码输出什么?
    if ("") {
        console.log('empty')
    }
    // 答案:判断为false,无输出
    
    // 例3:如下代码输出什么?
    if (" ") {
        console.log('blank')
    }
    // 答案:判断为true,输出blank
    
    // 例4:如下代码输出什么?
    if ([0]) {
        console.log('array')
    }
    // 答案:判断为true,输出array
    
    // 例5:如下代码输出什么?
    if(0.00){
      console.log('0.00')
    }
    // 答案:判断为false,无输出
    

    那么,什么情况下表达式会被判断为真,什么情况下表达式会被判断为假呢?
    总结:

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

    2.== 的判断

    "" == 0  //true
    " " == 0  //true
    "" == true  //false
    "" == false  //true
    " " == true  //false "空格"转化为数字为NaN
    !" " == true  //false  !的操作对象为非空字符串时返回false
    !" " == false  //true
    "hello" == true  //false
    "hello" == false //true
    "0" == true  //false
    "0" == false  //true
    "00" == false  //true
    "0.00" == false  //true
    

    先来总结一下

    特殊 结果
    null == undefined true
    number == string number == toNumber(string) ,看字符串是否能转成数字
    Object == String or Number toPrimitive(Object) ==
    Boolean == (any) toNumber(Boolean) ==(any),把布林值转化为数字

    toNumber

    类型 结果
    Undefined NaN
    Null 0
    Boolean false--0 ,true--1
    String “abc” -> NaN, “123” -> 123

    toPrimitive

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

    相关文章

      网友评论

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

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