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

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

作者: gzy_a5a4 | 来源:发表于2018-06-12 17:34 被阅读0次

    一、 if 的判断

    // 题目1:如下代码输出什么?
    if ("hello") {
        console.log("hello")
    }
    
    // 题目2:如下代码输出什么?
    if ("") {
        console.log('empty')
    }
    
    // 题目3:如下代码输出什么?
    if (" ") {
        console.log('blank')
    }
    
    // 题目4:如下代码输出什么?
    if ([0]) {
        console.log('array')
    }
    
    // 题目5
    if('0.00'){
      console.log('0.00')
    }
    

    解密

    • 对于括号里的表达式,会被强制转换为布尔类型

    原理

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

    答案

    1. string ==> true
    2. 空字符串 ==> false
    3. string ==> true
    4. obj ==> true
    5. string ==> true

    所以只有2无法正常输出

    二、 == 的判断

    题目

    "" == 0  //题目1
    " " == 0  //题目2
    "" == true  //题目3
    "" == false  //题目4
    " " == true  //题目5
    
    !" " == true  //题目6
    !" " == false  //题目7
    "hello" == true  //题目8
    "hello" == false //题目9
    "0" == true  //题目10
    "0" == false  //题目11
    "00" == false  //题目12
    "0.00" == false  //题目13
    
    undefined == null  //题目14
    {} == true  //题目15
    [] == true  //题目16
    var obj = { 
      a: 0, 
      valueOf: function(){return 1} 
    } 
    obj == "[object Object]"  //题目17
    obj == 1  //题目18
    obj == true  //题目19
    

    解密

    x y 结果
    null undefined x == toNumber(y)
    Number String true
    Boolean (any) toNumber(x) == y
    Object String or Number toPrimitive(x) == y
    • toNumber
    type Result
    Undefined NaN
    Null 0
    Boolean ture -> 1, false -> 0
    String “abc” -> NaN, “123” -> 123
    • toPrimitive

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

    答案

    1. true 0==0
    2. true 0==0
    3. false 0==1
    4. true 0==0
    5. false 0==1
    6. false " " == true
    7. true
    8. false "hello"==NaN
    9. false
    10. false"0"==0
    11. true
    12. true
    13. true
    14. true
    15. false
    16. false
    17. false
    18. true
    19. true

    三、总结

    1.对于 if 的判断,string 记住空字符串是 false, 其余是 true
    2.对于 == 的判断,将其转化为数字

    参考:饥人谷

    相关文章

      网友评论

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

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