if中可使用那些做爲判斷條件呢?

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

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

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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中認爲是假編程

 

例如:函數

 

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


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

 

例如:spa

 

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


if判斷是假code

 

再例如:htm

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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的類型的變量是同樣的。ci

例如:

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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語言中數值的類型的變量是同樣的。

 

例如:

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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都是假

 

 

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


發現非0是都是真

 

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

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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第六類已定義的函數,根據調用方式又分爲兩種

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

 

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

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

 

例如:

 

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

是假,是由於,函數若是沒有定義返回值值,則返回值是undefined

 

 


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

例如:

 

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

其實因爲在js中變量在沒有賦值時是沒有類型的,所以和第一種狀況是同樣的。

 

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

 

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


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

 

例如

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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第九類已定義的對象的方法,和單獨的函數是同樣的,

 

不加括號是若是沒定義就是假,

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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" );
            }

 

 

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

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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是假,其餘爲真;對於字符類型空字符串是假,其餘爲真,對於方法屬性,若是定義了就是真,不然就是假,其餘全部均可以看作是這些的變相應用。

相關文章
相關標籤/搜索