在cssrain整理的一個 試題集 中有這么一道題:
<SCRIPT LANGUAGE="JavaScript">
var a = 0;
var b = -1;
var c = 1;
function assert (aVar) {
if (aVar==true) alert(true);
else alert(false);
}
assert(a) ;
assert(b) ;
assert(c) ;
</SCRIPT>
運行代碼框
提示:可修改后代碼再運行!
按照我的理解,任何非0的數值的布爾值都應該為true。
可是這道題的正確輸出為:false false true。
(-1==true)的值為false。
再來看下面這個例子:
<SCRIPT LANGUAGE="JavaScript">
var a = 0;
var b = -1;
var c = 1;
function assert (aVar) {
if (aVar) alert(true);
else alert(false);
}
assert(a) ;
assert(b) ;
assert(c) ;
</SCRIPT>
提示:可修改后代碼再運行!
運行結果依次為:false,true,true。
在這里,我們發現,if(aVar) 和 if(aVar == true)的結果并不相同。
cssrain在 答案 中的解釋是:
if(aVar) 和 if (aVar==true) 對負數有截然不同的答案。
真的是負數的原因嗎?看下面這個例子:
運行代碼框
提示:可修改后代碼再運行!
為什么正數2返回的也是false呢。我們將數字轉換為boolean值看看。
運行代碼框
提示:可修改后代碼再運行!
下一篇 jQuery 性能規則分析