js面向對象編程:if中可使用那些做爲判斷條件呢?

在全部編程語言中if是最長用的判斷之一,但在js中到底哪些東西能夠在if中式做爲判斷表達式呢?html

例如如何幾行,只是少了一個括號,真假就徹底不一樣,到底表示什麼含義呢?編程

var obj={};
 obj.Funtext=function(){};
    if(obj.Funtext)
   {
     alert("true  obj.Funtext;");
   }
   else
   {
     alert("false  obj.Funtext");
   }
   obj.Funtext=function(){};
    if(obj.Funtext())
   {
     alert("true  obj.Funtext();");
   }
   else
   {
     alert("false  obj.Funtext()");
   }
View Code
1第一類已定義的變量但未賦值在if中認爲是假

例如:編程語言

var  t;
          if(t)
          {
            alert("true 已定義未賦值");
          }
          else
          {
            alert("false 已定義未賦值");
          }
View Code

 

2第二類已定義的變量,賦值爲空字符串在if中認爲是假,賦值爲其餘的字符串,也就是是字符串中有字符就認爲是真

例如:ide

var  t;
  t="";
   if(t)
   {
     alert("true t='';");
   }
   else
   {
     alert("false t=''");
   }
View Code
if判斷是假

再例如:函數

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'");
          }
View Code
if判斷是真,也就是對於字符串類型,只要有字符,即便是空格字符if判斷也爲真。

3第三類已定義的變量,賦值爲true在if中認爲是真,賦值爲false,則爲假,這和其餘語言中bool的類型的變量是同樣的。測試

例如:spa

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;");
 }
View Code
4第四類已定義的變量,賦值爲0在if中則爲假,其餘數值認爲是真,這和c語言中數值的類型的變量是同樣的。

例如:3d

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;");
 }
View Code
測試發現無論是0,仍是0.0都是假
var  t;
  t=2;
 if(t)
 {
   alert("true  t=2;");
 }
 else
 {
   alert("false  t=2;");
 }
View Code
發現非0是都是真

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

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;");
           }
View Code
因爲在js中未定義的變量默認值是undefined,所以這也就就解釋了第一類狀況

6第六類已定義的函數,根據調用方式又分爲兩種htm

第一種:不帶括號的,若是定義了就是真,沒有定義會報錯

function testfunction(){}
           if(testfunction)
           {
             alert("true  testfunction;");
           }
           else
           {
             alert("false  testfunction;");
           }
View Code
第二種:帶括號的,其實至關於調用函數,天然是根據函數的返回值判斷真假

例如:

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;");
           }
View Code
其實因爲在js中變量在沒有賦值時是沒有類型的,所以和第一種狀況是同樣的。

但在賦值後,就會變成真,例如:

var obj;
            obj={};
            if(obj)
           {
             alert("true  obj={};");
           }
           else
           {
             alert("false  obj={};");
           }
View Code
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");
          }
View Code
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");
           }
View Code

加了括號至關於調用方法,就是根據返回值判斷真假。

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()");
           }
View Code

能夠看到在js中能夠在if中做爲判斷的類型不少,但最終均可以看作這些類型的變形。只要掌握了這些最基本的,就能夠靈活運用if判斷了。

最基本是null,undefined,if判斷都是假;對於數值類型,0是假,其餘爲真;對於字符類型空字符串是假,其餘爲真,對於方法屬性,若是定義了就是真,不然就是假,其餘全部均可以看作是這些的變相應用。

轉載地址:紅黑聯盟 http://www.2cto.com/kf/201407/314978.html

相關文章
相關標籤/搜索