美文网首页
关于“if(xxx)”和“==”的判断方法

关于“if(xxx)”和“==”的判断方法

作者: Ru_sunny | 来源:发表于2018-05-06 10:13 被阅读0次

    面试笔试中你或许会看到关于“if(xxx)”和“==”的判断

    关于if(xxx)的判断

    题目:如下代码会输出什么?

    if("hello"){
    console.log('hello');
    }
    if(""){
    console.log('输出');
    }
    if(" "){
    console.log('空格');
    }
    if([0]){
    console.log('数组');
    }
    if('0'){
    console.log('数字0');
    }
    

    我们需要从原理上去理解,所以js是如何处理的呢?

    js会将括号里的内容强制转换成布尔类型,true就会输出,flase就不会输出

    下面是不同类型转换成布尔型的规律,我们只需要记住这些规律就可以了

    类型 转换后的结果
    undefined false
    Null false
    Boolean 直接判断
    Number +0,-0或NaN都为false,其他为true
    String 空字符串为false,其他都为true
    Obiect true

    用这些规律再去看题,就会很清晰了

    关于“ == ”的判断

    题目:如下代码会输出什么?

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

    我第一次看到它们的时候,很想说,这到底是什么。。。。。
    后来通过老师的讲解,知道了js面对这些代码时它的处理方式是什么

    js会将String类型,Boolean类型会To Number,Object类型会To Primitive!!

    To Number
    类型 To Number
    undefined NaN
    Null 0
    Boolean true -- 1,false -- 0
    String "abc" -- NaN ,"123" -- 123
    To Primitive

    先尝试掉调用valueOf方法获取结果,如果没有定义再尝试调用toString方法获取结果

    当然除了上面这些规律,我们还要单独记住两点

    1. null == undefined 的结果为true
    2. 其他的类型 == 后为false
    ps:其实这些判断也是为了提醒我们,在写代码的过程中不要写这种模糊的代码

    相关文章

      网友评论

          本文标题:关于“if(xxx)”和“==”的判断方法

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