JS if 变量判断的高阶用法

一、if(变量)的用法

if条件语句非常简单,如下:

if (条件) {
    如果条件为 true 时执行的代码
}

一般『条件』是由逻辑表达式组成,比如:

if (age > 20 && name == '张三') {
    return "helloWorld"
}

但是除了这种常规的条件判断之外,还有一些非常规的,比如:

if(age){
  return "helloWorld"
}

这种判断『变量』的方式,具体表达什么含义呢?如何使用?以下几种场景,具体分析 :

1. 当if括号里面的表达式Boolean时,直接判断

if (true){
   console.log("true"); //true
}
if (false){
   console.log("true"); //false
}

2.当if括号里面的表达式为Number时,分两种情况,当number为+0,-0,NaN的时候,为false;其他为true。

if(0){
  console.log("true"); //false
}
if(NaN){
  console.log("true"); //false
}
if(1){
  console.log("true"); //true
}

3.当if括号里面的表达式为String时,空字符串为false,其他为true;

if(""){
  console.log("true"); //false
}
if("abc"){
  console.log("true"); //true
}

4.当if括号里面的表达式为Undefined时,为false;

if(Undefined){
  console.log("true"); //false
}

5.当if括号里面的表达式为null时,为false;

if(null){
  console.log("true"); //false
}

toBoolean

类型 结果
undefined false
null false
Boolean 直接判断
string ""(空字符串)为false,其他为true
Object true
Number +0,-0,Nan为false,其他为true

二. a==b的判断

==是比较两个值是否相等,相同类型直接比较,不同类型的话,看情况转换。

String==Number --->toNumber(String)==Number

"" = 0 ; //true,因为“”转换为0
"  " = 0 ; //true
"hello" == 1  //false  ,因为"hello"转换为NaN
"hello" == 0 //false,同理

Boolean==(any) --->toNumber(Boolean)==(any)

1==true; //true,因为true转换为1
0==false;//true ,因为false转换为0
"0" == true  //false
"0" == false  //true
"00" == false  //true
"0.00" == false  //true

Object==String/Number---->toPrimitive(Object)
对于 Object 类型,先尝试调用 .valueOf 方法获取结果。 如果没定义,再尝试调用 .toString方法获取结果

{} == true  // false
[] == true  //false
var obj = { 
  a: 0, 
  valueOf: function(){return 1} 
} 
obj == "[object Object]"  //false
obj == 1  //true
obj == true  //true
null==undefined,//true

==知识点

  1. 如果两个值类型相同,则执行严格相等的运算
  2. 如果两个值的类型不同
  3. 如果一个是null,一个是undefined,那么相等
  4. 如果一个是数字,一个是字符串,先将字符串转为数字,然后比较
  5. 如果一个值是true/false则将其转为1/0比较
  6. 如果一个值是对象,一个是数字或字符串,则尝试使用valueOf和toString转换后比较
  7. 其它就不相等了

toNumber

类型 结果
Undefined NaN
Null 0
Boolean ture->1,false->0
String (""-->0, " "-->0 )空字符串与空白字符串转换数值0,abc"->NaN,"123"->123

你可能感兴趣的:(JS if 变量判断的高阶用法)