1. 程式人生 > >JavaScript條件表示式的布林判斷

JavaScript條件表示式的布林判斷

      在JavaScript中,對於單獨作為判斷式裡的一個表示式if(aaa)這樣的條件判斷時,會先把aaa轉換成布林型true或false,再判斷其真假。其他型別轉換布林型的規則是: 
·對於只定義未賦值的變數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.一般為了安全起見,都是使用===進行比較的;