JavaScript中的“if”真假判斷總結


在所有編程語言中if、while、for等語句,需要進行條件判斷,if是最長用的判斷之一,通過if看看作為判斷真假有那些?

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

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

 

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

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

 

結果: if判斷是假

--------------------------------------------------------------------------------------------------

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

 

結果: if判斷是真,也就是對於字符串類型,只要有字符,即使是"空格字符"if判斷也為真。

3. 第三類已定義的變量,賦值為true在if中認為是真,賦值為false,則為假,這和其他語言中bool的類型的變量是一樣的。

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

 

結果: false

------------------------------------------------------------------------------------------------------

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

 

結果: true


4. 第四類已定義的變量,賦值為0在if中則為假,其他數值認為是真,這和c語言中數值的類型的變量是一樣的。

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

 

結果:  false 

---------------------------------------------------------------------------------------------------------

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

 

結果:  false 

測試發現不管是0,還是0.0都是假

--------------------------------------------------------------------------------------------------

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

結果:  true。    發現非0都是真

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

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

 

結果: false

---------------------------------------------------------------------------------------------------------

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

 

結果: false

由於在js中未定義的變量默認值是undefined,因此這也就解釋了第一類情況

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

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

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

 

第二種:帶括號的,其實相當於調用函數,自然是根據函數的返回值判斷真假

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

 

是假,是因為,函數如果沒有定義返回值,則返回值是undefined

7. 第七類已定義的對象,未賦值時在if中則為假,賦值后是真。

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

 

其實由於在js中變量在沒有賦值時是沒有類型的,因此和第一種情況是一樣的。

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

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

 

8. 第八類已定義的對象的屬性字段,和單獨的變量是一樣的,例如數值型為0時是假,其他為真,字符串型是為空值時是假,其他為真。

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

 

結果: false

----------------------------------------------------------------------------------------------------------

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

 

結果: true

----------------------------------------------------------------------------------------------------------

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

 

結果: false

-----------------------------------------------------------------------------------------------------------

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

 

結果: true

9. 第九類已定義的對象的方法,和單獨的函數是一樣的。

不加括號是如果沒定義就是假。

var obj={};
obj.Funtext=function(){};
kif(obj.Funtext)
{
     alert("true");
}
else
{
     alert("false");
}

 

if(obj.Funtext1)//未定義屬性,也沒有定義方法
{
      alert("true");
}
else
{
    alert("false");
}

 

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

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

 

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

總結:最基本是null,undefined,if判斷都是假;對於數值類型,0是假,其他為真;對於字符類型空字符串是假,其他為真,對於方法屬性,如果定義了就是真,否則就是假,其他所有都可以看做是這些的變相應用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM