JavaScript條件表示式的布林判斷
阿新 • • 發佈:2019-02-13
在JavaScript中,對於單獨作為判斷式裡的一個表示式if(aaa)這樣的條件判斷時,會先把aaa轉換成布林型true或false,再判斷其真假。其他型別轉換布林型的規則是:
對於用==號判斷的條件表示式if(aaa==bbb)與if(aaa)的情況時,以下是幾個容易出錯的例子:
總結如下:
·對於只定義未賦值的變數var aaa,其值為undefined,為false.
·字串:空字串""轉換布林型為false,其它為true;
·數字:數字0轉換為布林值為false,其它為true;
·物件:為null的物件轉換為布林型為false,其它為true;
·物件屬性值:未宣告的屬性值、屬性值為0或空串""或false或null的,轉換布林值為false,其餘為true;
對於用==號判斷的條件表示式if(aaa==bbb)與if(aaa)的情況時,以下是幾個容易出錯的例子:
var a = ""; if(a==0){ alert("空串==0為真");//列印 } if(0==a){ alert("0==空串為真");//列印 } if(0){ alert("0 true"); }else{ alert("0 false");//列印 } var v = 0; if(v){ alert("值為0的變數 true"); }else{ alert("值為0的變數 false");//列印 } if(v==false){ alert("0==false為真");//列印 } var obj = new Object(); obj.aa = 0; obj.bb = false; if(obj.aa){ alert("物件屬性值為0 true"); }else{ alert("物件屬性值為0 false");//列印 } if(obj.bb){ alert("物件屬性值為false true"); }else{ alert("物件屬性值為false false");//列印 } if(obj.aa==obj.bb){ alert("震撼");//列印 } if(obj.bb==0){ alert("震撼++");//列印 } if(obj.bb==""){ alert("震撼++");//列印 }
總結如下:
1.==和!=是比較運算子,但當型別不同時會進行型別轉換,例如false==0這個條件為真;
2.而===和!==不會進行型別轉換,型別不同就判斷它們不同,所以false===0這個條件為假;
3.一般為了安全起見,都是使用===進行比較的;