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

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

作者: 不想做肥宅的薛小皮 | 来源:发表于2018-08-23 11:10 被阅读0次

    if(xx)的判断

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

    转换规则是除了下面六个值被转为false,其他值都视为true。
    • undefined
    • null
    • false
    • 0
    • NaN
    • ""或''(空字符串)
    if ('') {
      console.log(true);
    }
    // 没有任何输出
    

    上面代码的if命令后面的判断条件,预期应该是一个布尔值,所以JavaScript自动将空字符串,转为布尔值false,导致程序不会进入代码块,所以没有任何输出。

    需要特别注意的是,空数组([])和空对象({})对应的布尔值,都是true。

    if ([]) {
      console.log(true);
    }
    // true
    
    if ({}) {
      console.log(true);
    }
    // true
    
    课件题目
    if ("hello") {
        console.log("hello")
    }
    //hello
    if ("") {
        console.log('empty')
    }
    // undefined
    if (" ") {
        console.log('blank')
    }
    //blank
    if ([0]) {
        console.log('array')
    }
    //array
    if('0.00'){
      console.log('0.00')
    }
    //0.00
    

    ==的判断

    运算符原理.png
    1 == true // true 
    // Number(true) ===1
    
    0 == false // true 
    // Number(false)===0 
    
    "" == 0 // true 
    //Number('"") === 0  
    
    " " == 0 // ture
    //Number(" ") === 0
    
    "" == true  //false
    //true代表1
    
    "" == false  //true
    //false代表0
    
    " " == true //false
    
    //!优先级大
    !" " == true  //false
    !" " == false  //true
    //空字符串为false,其他都为true
    
    "hello" == true  //false
    "hello" == false //false
    //"hello"转换成数字是NAN ,不和任何数字相等
     
    "0" == true  //false
    //"0"转换成数字就是0,true是1
    "0" == false  //true
    "00" == false  //true
    "0.00" == false //true
    
    undefined == null  //true
    {} == true  //false
    [] == true  //false
    var obj = { 
      a: 0, 
      valueOf: function(){return 1} 
    } 
    obj == "[object Object]"  //false
    obj == 1  //true
    obj == true  //true
    

    相关文章

      网友评论

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

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