javascript:if中可以使用那些作為判斷條件

來源:互聯網
上載者:User

在所有程式設計語言中if是最長用的判斷之一,但在js中到底哪些東西可以在if中式作為判斷運算式呢。

例如如何幾行,只是少了一個括弧,真假就完全不同,到底表示什麼含義呢

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

1第一類已定義的變數但未賦值在if中認為是假

例如:

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

2第二類已定義的變數,賦值為空白字串在if中認為是假,賦值為其他的字串,也就是是字串中有字元就認為是真

例如:

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

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'");          }

if判斷是真,也就是對於字串類型,只要有字元,即使是空白字元if判斷也為真。

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

發現非0是都是真 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={};            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是假,其他為真;對於字元類型Null 字元串是假,其他為真,對於方法屬性,如果定義了就是真,否則就是假,其他所有都可以看做是這些的變相應用。





相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.