JavaScript布爾型資料與==運算子。

來源:互聯網
上載者:User

今天在藍色中看到一篇文章,對js 中布爾型及==運算子進行了一番比較分析。

不看不知道,一看嚇一跳,平時還真的沒有注意到這麼細節的東西:

所謂大牛與菜鳥,估計這是重要的區別之一了。

說到布爾型,估計不少人都知道JS中非0即為true,那麼請您運行一下下面這兩行代碼:

1 var iTest=2;
2 if(iTest)
3 {
4    alert(true);
5 }
6 if(iTest==true)
7 {
8    alert(true);
9 }

 

你覺得答案是多少呢?

   答案是: true true

   ----對不起,其實答案是 true false,但我相信,上面才是不少人以目中的第一答案。

  為了讓大家,也為了讓我能記住,或者是知道有這麼一些我們容易忽略的東西,我將記錄一下這些區別或細節:

  一、單純的布爾值運行,的確是非0為true,如:
 

 1   var i1=1;
 2   var i2=-1;
 3   var i3=0;
 4   alert(Boolean(i1)); //true
 5   alert(Boolean(i2)); //true
 6   alert(Boolean(i3)); //false
 7   if(i1){}  //true
 8   if(i2){} //true
 9   if(i3){} //false 

 

   二、==運算子並不是簡單的將非0的轉為true,反之為false,反而是:

     1、If Type(x) is Boolean, return the result of the comparison ToNumber(x) == y.
          If Type(y) is Boolean, return the result of the comparison x == ToNumber(y).

         也就是說:如果某一個運算元為bool型,那麼它會被轉換成數字進行比較,而規則是:true->1 false->0

         如:

       

 1 var i1=-2;
 2 var i4=2;
 3 var i2=1;
 4 var i3=0;
 5 if(i1==true) {} //將把true->1,因此 1!=-2 false
 6 if(i2==true) {} //將把true->1,因此1==1  true
 7 if(i3==true) {} //這個很明顯了。 false
 8 if(i4==true){]  //將把true->1,因此2!=1  false
 9 ////但是,下面就不同了:
10 if(i1){} //相當於Boolean(-2) ,非0,因此為true   true
11 if(i2){} //非0,因此為ture
12 if(i3){} //0,因此為false
13 if(i4){} //非0,因此為true

 

    2、If Type(x) is Number and Type(y) is String, return the result of the comparison x == ToNumber(y).
        If Type(x) is String and Type(y) is Number, return the result of the comparison ToNumber(x) == y.

        也就是說某一運算元為字串,另一個是number時,字串為轉換為number,如:
    

1 var a = "1";
2 var b = "001";
3 var c = "";

5 if(a==1){} //a=>number(a) true
6 if(b==1){} //b=>number(b) true
7 if(c==1){} //b=>0 false

 

    3、非Null 字元串會被轉換成true(而null和undefined為false),如:
  

1 var a="a";
2 var b="";
3 if(a){} //true
4 if(b){} //false

 

 

------

 說到這裡,想起jQuery的$,這個東東選取元素時,結果返回jQuery對象,無論元素是否存在。

 因此不能用if($('#id'))來判斷是否選取到。而可以用$('#id').length>0來判斷.

  原文章地址:http://www.blueidea.com/tech/web/2010/7576.asp

------

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.