zoukankan      html  css  js  c++  java
  • if中可以使用哪些

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

    例如:

    var  t;
              if(t)
              {
                alert("true 已定义未赋值");
              }
              else
              {
                alert("false 已定义未赋值");
              }

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

    例如:

    var  t;
      t="";
       if(t)
       {
         alert("true t='';");
       }
       else
       {
         alert("false t=''");
       }

    再例如:

    var  t;
              t=" ";
              if(t)
              {
                alert("true t=' ';");
              }
              else
              {
                alert("false t=' '");
              }
               t="111";
              if(t)
              {
                alert("true t='111';");
              }
              else
              {
                alert("false t='111'");
              }

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

    例如:

    var  t;
     t=false;
     if(t)
     {
       alert("true  t=false;");
     }
     else
     {
       alert("false  t=false;");
     }
      t=true;
     if(t)
     {
       alert("true  t=true;");
     }
     else
     {
       alert("false  t=true;");
     }

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

    例如:

    var  t;
     t=0;
     if(t)
     {
       alert("true  t=0;");
     }
     else
     {
       alert("false  t=0;");
     }
      t=0.0;
     if(t)
     {
       alert("true  t=0.0;");
     }
     else
     {
       alert("false  t=0.0;");
     }

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

    var  t;
      t=2;
     if(t)
     {
       alert("true  t=2;");
     }
     else
     {
       alert("false  t=2;");
     }

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

    var  t=null;
               if(t)
               {
                 alert("true  t=null;");
               }
               else
               {
                 alert("false  t=null;");
               }
                t=undefined;
               if(t)
               {
                 alert("true  t=undefined;");
               }
               else
               {
                 alert("false  t=undefined;");
               }

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

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

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

    function testfunction(){}
               if(testfunction)
               {
                 alert("true  testfunction;");
               }
               else
               {
                 alert("false  testfunction;");
               }

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

    例如:

    function testfunction(){}
     if(testfunction())
              {
                alert("true  testfunction;");
              }
              else
              {
                alert("false  testfunction;");
              }

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

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

    例如:

    var obj;
                if(obj)
               {
                 alert("true  obj;");
               }
               else
               {
                 alert("false  obj;");
               }

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

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

    var obj;
                obj={};
                if(obj)
               {
                 alert("true  obj={};");
               }
               else
               {
                 alert("false  obj={};");
               }

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

    例如

    var obj={};
              obj.Text="";
               if(obj.Text)
              {
                alert("true  obj.Text;");
              }
              else
              {
                alert("false  obj.Text");
              }
               obj.Text="Text";
               if(obj.Text)
              {
                alert("true  obj.Text;");
              }
              else
              {
                alert("false  obj.Text");
              }
              obj.Text=0;
               if(obj.Text)
              {
                alert("true  obj.Text;");
              }
              else
              {
                alert("false  obj.Text");
              }
               obj.Text=1;
               if(obj.Text)
              {
                alert("true  obj.Text;");
              }
              else
              {
                alert("false  obj.Text");
              }

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

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

    var obj={};
                obj.Funtext=function(){};
                if(obj.Funtext)
               {
                 alert("true  obj.Funtext;");
               }
               else
               {
                 alert("false  obj.Funtext");
               }         
                if(obj.Funtext1)//未定义属性,也没有定义方法
               {
                 alert("true  obj.Funtext1;");
               }
               else
               {
                 alert("false  obj.Funtext1");
               }

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

    var obj={};
                 obj.Funtext=function(){};
                if(obj.Funtext())
               {
                 alert("true  obj.Funtext();");
               }
               else
               {
                 alert("false  obj.Funtext()");
               }
                obj.Funtext2=function(){ return "ff"};
                if(obj.Funtext2())
               {
                 alert("true  obj.Funtext2();");
               }
               else
               {
                 alert("false  obj.Funtext2()");
               }

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

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

    转载地址:红黑联盟 http://www.2cto.com/kf/201407/314978.html

  • 相关阅读:
    大数加法、乘法实现的简单版本
    hdu 4027 Can you answer these queries?
    zoj 1610 Count the Colors
    2018 徐州赛区网赛 G. Trace
    1495 中国好区间 尺取法
    LA 3938 动态最大连续区间 线段树
    51nod 1275 连续子段的差异
    caioj 1172 poj 2823 单调队列过渡题
    数据结构和算法题
    一个通用分页类
  • 原文地址:https://www.cnblogs.com/redpen/p/8995153.html
Copyright © 2011-2022 走看看