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

2018-05-06  本文已影响0人  Ru_sunny

面试笔试中你或许会看到关于“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:其实这些判断也是为了提醒我们,在写代码的过程中不要写这种模糊的代码
上一篇下一篇

猜你喜欢

热点阅读