国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > web前端 > jscript > 从一道js笔试题到==运算符的简析

从一道js笔试题到==运算符的简析

来源:程序员人生   发布时间:2013-11-23 02:56:42 阅读次数:3364次

在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值看看。

运行代码框


提示:可修改后代码再运行!

生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生