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

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

作者: 未来未来未来未来未来 | 来源:发表于2018-10-11 16:49 被阅读0次

    if(xx)

    判断原理: 对于if()里括号的表达式(如以下),会被强制转换为布尔类型

    if条件句中有几种转化类型,需转换成布尔类型:

    undefined转换成布尔类型是false。

    null转换成布尔类型是false。

    Number转换成布尔类型+0,-0或者nan为false,其余为true。

    object转换成布尔类型是true。

    string转换成布尔类型空字符串为false,其余都为true。

    布尔类型就是布尔。

    
    a =1 if(a) {
    
    console.log('true')
    
    }// true
    
    a =0 if(a){
    
    console.log('true')
    
    }// false
    
    a =NaN if(a){
    
    console.log('true')
    
    }//false
    
    a =-1 if(a){
    
    console.log('true')
    
    }//false
    
    

    if(string)

    当if(string)时:除了空字符串,其他都为true。例如:

    if('jirengu'){
        console.log('true')
    } // true
    if('   '){
        console.log('true')
    } // true
    if(''){
        console.log('true')
    } // false
    if('0.00'){
        console.log('true')
    }//true
    

    if(object)时:转化成布尔类型为true;

    if(boolean)时:可以直接判断;

    if(undefined)时:转化为布尔类型为false。

    a = = b

    相等运算符用来比较相同类型的数据时,与严格相等运算符完全一样。

    比较不同类型的数据时,相等运算符会先将数据进行类型转换,然后再用严格相等运算符比较。类型转换规则如下:

    1,原始类型的值:

    原始类型的数据会转换成数值类型再进行比较。

    1 == true // true
    // 等同于 1 === Number(true)
    
    0 == false // true
    // 等同于 0 === Number(false)
    
    2 == true // false
    // 等同于 2 === Number(true)
    
    2 == false // false
    // 等同于 2 === Number(false)
    
    'true' == true // false
    // 等同于 Number('true') === Number(true)
    // 等同于 NaN === 1
    
    '' == 0 // true
    // 等同于 Number('') === 0
    // 等同于 0 === 0
    
    '' == false  // true
    // 等同于 Number('') === Number(false)
    // 等同于 0 === 0
    
    '1' == true  // true
    // 等同于 Number('1') === Number(true)
    // 等同于 1 === 1
    
    '\n  123  \t' == 123 // true
    // 因为字符串转为数字时,省略前置和后置的空格
    

    上面代码将字符串和布尔值都转为数值,然后再进行比较。

    2,对象与原始类型值比较:

    对象(这里指广义的对象,包括数组和函数)与原始类型的值比较时,对象转化成原始类型的值,再进行比较。

    [1] == 1 // true
    // 等同于 Number([1]) == 1
    
    [1] == '1' // true
    // 等同于 Number([1]) == Number('1')
    
    [1] == true // true
    // 等同于 Number([1]) == Number(true)
    

    上面代码中,数组[1]与数值进行比较,会先转成数值,再进行比较;与字符串进行比较,会先转成数值,然后再与字符串进行比较,这时字符串也会转成数值;与布尔值进行比较,两个运算子都会先转成数值,然后再进行比较。

    3,undefined 和 null

    undefined和null与其他类型的值比较时,结果都为false,它们互相比较时结果为true。

    false == null // false
    false == undefined // false
    
    0 == null // false
    0 == undefined // false
    
    undefined == null // true
    

    绝大多数情况下,对象与undefined和null比较,都返回false。只有在对象转为原始值得到undefined时,才会返回true,这种情况是非常罕见的。

    相关文章

      网友评论

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

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