zoukankan      html  css  js  c++  java
  • javascript中 if条件语句中的判断条件类型总结

    在所有编程语言中if是最长用的判断之一,但在js中到底哪些东西可以在if中式作为判断表达式呢?

    例如如何几行,只是少了一个括号,真假就完全不同,到底表示什么含义呢

     1 var obj={};
     2  obj.Funtext=function(){};
     3     if(obj.Funtext)
     4    {
     5      alert("true  obj.Funtext;");
     6    }
     7    else
     8    {
     9      alert("false  obj.Funtext");
    10    }
    11    obj.Funtext=function(){};
    12     if(obj.Funtext())
    13    {
    14      alert("true  obj.Funtext();");
    15    }
    16    else
    17    {
    18      alert("false  obj.Funtext()");
    19    }

    1第一类已定义的变量但未赋值在if中认为是假

    例如:

    1 var  t;
    2           if(t)
    3           {
    4             alert("true 已定义未赋值");
    5           }
    6           else
    7           {
    8             alert("false 已定义未赋值");
    9           }        

    2第二类已定义的变量,赋值为空字符串在if中认为是假,赋值为其他的字符串,也就是是字符串中有字符就认为是真

    例如

     1 var  t;
     2           t=" ";
     3           if(t)
     4           {
     5             alert("true t=' ';");
     6           }
     7           else
     8           {
     9             alert("false t=' '");
    10           }
    11            t="111";
    12           if(t)
    13           {
    14             alert("true t='111';");
    15           }
    16           else
    17           {
    18             alert("false t='111'");
    19           }

    if判断是真,也就是对于字符串类型,只要有字符,即使是空格字符if判断也为真。

    3第三类已定义的变量,赋值为true在if中认为是真,赋值为false,则为假,这和其他语言中bool的类型的变量是一样的。

    例如:

     1 var  t;
     2  t=false;
     3  if(t)
     4  {
     5    alert("true  t=false;");
     6  }
     7  else
     8  {
     9    alert("false  t=false;");
    10  }
    11   t=true;
    12  if(t)
    13  {
    14    alert("true  t=true;");
    15  }
    16  else
    17  {
    18    alert("false  t=true;");
    19  }

    4第四类已定义的变量,赋值为0在if中则为假,其他数值认为是真,这和c语言中数值的类型的变量是一样的。

    例如:

     1 var  t;
     2  t=0;
     3  if(t)
     4  {
     5    alert("true  t=0;");
     6  }
     7  else
     8  {
     9    alert("false  t=0;");
    10  }
    11   t=0.0;
    12  if(t)
    13  {
    14    alert("true  t=0.0;");
    15  }
    16  else
    17  {
    18    alert("false  t=0.0;");
    19  }

    测试发现不管是0,还是0.0都是假

     1 var  t;
     2   t=2;
     3  if(t)
     4  {
     5    alert("true  t=2;");
     6  }
     7  else
     8  {
     9    alert("false  t=2;");
    10  }

    发现非0是都是真

    5第五类js中的特殊值null,undefined,都是假

     1 var  t=null;
     2            if(t)
     3            {
     4              alert("true  t=null;");
     5            }
     6            else
     7            {
     8              alert("false  t=null;");
     9            }
    10             t=undefined;
    11            if(t)
    12            {
    13              alert("true  t=undefined;");
    14            }
    15            else
    16            {
    17              alert("false  t=undefined;");
    18            }

    由于在js中未定义的变量默认值是undefined,因此这也就就解释了第一类情况

    6第六类已定义的函数,根据调用方式又分为两种

    第一种:不带括号的,如果定义了就是真,没有定义会报错

    1 function testfunction(){}
    2            if(testfunction)
    3            {
    4              alert("true  testfunction;");
    5            }
    6            else
    7            {
    8              alert("false  testfunction;");
    9            }

    第二种:带括号的,其实相当于调用函数,自然是根据函数的返回值判断真假

    例如:

    1 function testfunction(){}
    2  if(testfunction())
    3           {
    4             alert("true  testfunction;");
    5           }
    6           else
    7           {
    8             alert("false  testfunction;");
    9           }

    是假,是因为,函数如果没有定义返回值值,则返回值是undefined


    7第七类已定义的对象,未赋值时在if中则为假,赋值后是真。

    例如:

    1 var obj;
    2             if(obj)
    3            {
    4              alert("true  obj;");
    5            }
    6            else
    7            {
    8              alert("false  obj;");
    9            }

    其实由于在js中变量在没有赋值时是没有类型的,因此和第一种情况是一样的。

    但在赋值后,就会变成真,例如:

     1           var <span style="font-family: Arial, Helvetica, sans-serif;">obj</span>
     2 ;
     3             obj={};
     4             if(obj)
     5            {
     6              alert("true  obj={};");
     7            }
     8            else
     9            {
    10              alert("false  obj={};");
    11            }

    8第八类已定义的对象的属性字段,和单独的变量是一样的,例如数值型为0时是假,其他为真,字符串型是为空值时是假,其他为真。

    例如

     
     1 var obj={};
     2           obj.Text="";
     3            if(obj.Text)
     4           {
     5             alert("true  obj.Text;");
     6           }
     7           else
     8           {
     9             alert("false  obj.Text");
    10           }
    11            obj.Text="Text";
    12            if(obj.Text)
    13           {
    14             alert("true  obj.Text;");
    15           }
    16           else
    17           {
    18             alert("false  obj.Text");
    19           }
    20           obj.Text=0;
    21            if(obj.Text)
    22           {
    23             alert("true  obj.Text;");
    24           }
    25           else
    26           {
    27             alert("false  obj.Text");
    28           }
    29            obj.Text=1;
    30            if(obj.Text)
    31           {
    32             alert("true  obj.Text;");
    33           }
    34           else
    35           {
    36             alert("false  obj.Text");
    37           }

    9第九类已定义的对象的方法,和单独的函数是一样的,

    不加括号是如果没定义就是假,

     1 var obj={};
     2             obj.Funtext=function(){};
     3             if(obj.Funtext)
     4            {
     5              alert("true  obj.Funtext;");
     6            }
     7            else
     8            {
     9              alert("false  obj.Funtext");
    10            }          
    11             if(obj.Funtext1)//未定义属性,也没有定义方法
    12            {
    13              alert("true  obj.Funtext1;");
    14            }
    15            else
    16            {
    17              alert("false  obj.Funtext1");
    18            }

    加了括号相当于调用方法,就是根据返回值判断真假。

     1 var obj={};
     2              obj.Funtext=function(){};
     3             if(obj.Funtext())
     4            {
     5              alert("true  obj.Funtext();");
     6            }
     7            else
     8            {
     9              alert("false  obj.Funtext()");
    10            }
    11             obj.Funtext2=function(){ return "ff"};
    12             if(obj.Funtext2())
    13            {
    14              alert("true  obj.Funtext2();");
    15            }
    16            else
    17            {
    18              alert("false  obj.Funtext2()");
    19            }

    可以看到在js中可以在if中作为判断的类型很多,但最终都可以看做这些类型的变形。只要掌握了这些最基本的,就可以灵活运用if判断了。

    最基本是null,undefined,if判断都是假;对于数值类型,0是假,其他为真;对于字符类型空字符串是假,其他为真,对于方法属性,如果定义了就是真,否则就是假,其他所有都可以看做是这些的变相应用。

     原文 https://www.cnblogs.com/Liangbingbing/p/6582253.html

  • 相关阅读:
    Java中的List转换成JSON报错(一)
    关于侦听的注册
    TCMalloc小记
    ocp|ocm考证系列文章
    开源HTML5 APP开发神器CanTK发布
    实例级别的回滚
    MySQL查询所有数据库表出错
    java.lang.ArrayIndexOutOfBoundsException
    如何修改64位Eclipse中的代码字体大小
    gpt 分区容量错误
  • 原文地址:https://www.cnblogs.com/itgezhu/p/11578039.html
Copyright © 2011-2022 走看看