导读:在cssrain整理的一个 试题集 中有这么一道题: SCRIPT LANGUAGE= Java Script 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 运行代码框
在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) 对负数有截然不同的答案。 真的是负数的原因吗?看下面这个例子: