javascript bool 強制型別轉換
阿新 • • 發佈:2019-02-14
javascript中if條件何時為true呢? 除了有一些能直接比較出結果的表示式之外,對於直接將變數放入if 括號中,何時為true,何時為false呢。下面看具體例子。
var a;
if(a)
{
alert("true");
}
else
{
alert("false");
}
執行結果為 falsevar a=1;
if(a)
{
alert("true");
}
else
{
alert("false");
}
執行結果為 true執行結果為 falsevar a=0; if(a) { alert("true"); } else { alert("false"); }
var a=true;//或者a="true"
if(a)
{
alert("true");
}
else
{
alert("false");
}
執行結果為 truevar a=false;//或者a="false"
if(a)
{
alert("true");
}
else
{
alert("false");
}
執行結果為 false此處的大小寫是不區分的。
執行結果為 falsevar a=""; if(a) { alert("true"); } else { alert("false"); }
var a="1212";//非空字串,並且不為"false"
// 注意包含空格的字串也是非空的 (" ")
if(a)
{
alert("true");
}
else
{
alert("false");
}
執行結果為 true其本質就是js中強制型別轉換的結果,也就是其他非bool型別轉換成bool型別,js處理如下:
對於var a;
1. 如果a未賦值,則為null,會被強制轉換為false;
2, 如果a為數值型別的話, 0 或0.000 為false,其他非0值為true;
3. 如果a為字串的話, “” 和“false” 會被轉換成false, 注意“false” 是不區分大小寫的,就是說“False”,"FAlse"等都會被轉換成false。
其他字串被轉換成true 包括含有空格的空字串(“ ”)。
4.如果a是其他型別:陣列,function,物件,則會被轉換成true;
有一種a為function需要說明,看下面例子:
var a=function(){};
if( a())
{
alert("true");
}
else
{
alert("false");
}
結果為false.
原因是沒有返回結果的函式值的返回結果是 undefined。而undefined 會被當做false 處理。
注意: if(a) 和if(a()) 是完全不同的。if(a)是會一直返回true的,因為他是將函式強制轉換。但是if((a))是將函式的返回結果強制轉換。