从一道js笔试题到==运算符的简析
作者:afc163 来源:蓝色理想 时间:2010-05-10 20:28:00
在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值看看。
运行代码框
这里非0数值的布尔值的确都是true,也就是说所有的问题都集中在2==true中的==运算符上。基本可以确定,==一定不是把数字转换为布尔值再进行比较。
标签:js,运算符,试题
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
服务器XMLHTTP(Server XMLHTTP in ASP)基础知识
2011-03-06 11:11:00
js随机永不重复数
2011-04-25 19:26:00
太有才了!让人称绝的404错误页面
2007-08-19 15:51:00
![](https://img.aspxhome.com/file/uploadpic/20078/19/200781915585830.jpg)
月影:function扩展
2008-05-19 12:27:00
细化解析:MySQL 服务器究竟有多稳定?
2009-01-14 11:55:00
10条影响CSS渲染速度的写法与建议
2008-09-09 22:02:00
ext3下删除mysql数据库的数据恢复案例
2009-05-13 14:39:00
自定义404错误页面实现自动跳转
2007-12-10 18:25:00
asp如何创建一个PDF文件?
2009-11-14 20:53:00
Javascript 动画初探(实现)
2009-02-06 15:56:00
排序的人文魅力
2008-05-06 12:47:00
一个不错的javascript加密解密算法源码
2010-03-28 13:12:00
SQLServer中数据库文件的存放方式,文件和文件组
2012-01-05 18:56:33
![](https://img.aspxhome.com/file/UploadPic/20121/5/201215193333545s.png)
五个影响mysql性能的关键配置
2010-08-08 09:13:00
SQLServer 全文检索(full-text)语法
2011-12-01 10:38:22
JS中实现JAVA的hashCode算法
2008-08-03 17:00:00
asp如何用ADO批量更新记录?
2010-06-10 18:42:00
挑战! 纯Javascript 重现经典网游! <魔力宝贝>
2008-10-04 10:37:00
![](https://img.aspxhome.com/file/UploadPic/200810/4/2008104104524850s.jpg)
MySQL和MongoDB设计实例对比
2011-06-19 15:41:01
如何在ADO中使用SQL函数?
2010-06-17 12:51:00