美文网首页
if (xx) 判断

if (xx) 判断

作者: shadow123 | 来源:发表于2018-03-17 12:28 被阅读0次

    number、string、boolean

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

    number 有两个假值,0 NaN

    if ("hello") {
        console.log("hello")  // hello
    }
    
    if ("") { //false
        console.log('empty') 
    } 
    
    if (" ") {
        console.log('blank') // blank
    }
    

    string 有一个假值,'' (空字符串)

    if(undefined){ //false
        consoel.log(1)
    }
    if(null){ //false
        console.log(2)
    }
    

    undefined 和 null 都是假值

    // 如下代码输出什么?
    if ([0]) {
        console.log('array') // array
    }
    
    if('0.00'){
      console.log('0.00') // 0.00
    }
    
    if([]){
        console.log('空数组') // 空数组
    }
    var fn = function(){
        return fn
    }
    if(fn()){
        console.log('函数')  // 函数
    }
    var obj ={}
    if(obj){
        console.log('空对象') // 空对象
    }
    

    可以看出js有六个假值,0,NaN,''(空字符串),false,undefined,null

    == 判断

    相等运算符(==),比较不同类型的数据时,相等运算符会先将数据进行类型转换,然后再用严格相等运算符比较。

    看个例子

    "" == 0  // true
    " " == 0  // true
    "" == true  // false
    "" == false  // true
    " " == true  // false
    

    再看个例子

    !" " == true  // false
    !" " == false  // true
    "hello" == true  // false
    "hello" == false // false
    "0" == true  // false
    "0" == false  // true
    "00" == false  // true
    "0.00" == false  // true
    

    下面的例子,你能做对几道

    undefined == null  //题目1
    true == {}  //题目2
    [] == true  //题目3
    var obj = { 
      a: 0, 
      valueOf: function(){return 1} 
    } 
    obj == "[object Object]"  //题目4
    obj == 1  //题目5
    obj == true  //题目6
    

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

    上题答案
    1.true 2. false 3.false 4.false 5.true 6.true

    不建议使用相等运算符(==),类型转化太难记了,建议使用严格相等运算符(===),严格相等运算符不做类型转化,是不是好用多了

    相关文章

      网友评论

          本文标题:if (xx) 判断

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