从一道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,运算符,试题
0
投稿
猜你喜欢
.net新兴日志框架Serilog简介
2023-06-28 16:20:05
Django之模板层的实现代码
2022-11-10 11:40:54
MySql安装与配置方法(MySQL添加用户、删除用户与授权)
2024-01-25 07:25:01
Golang中如何对MySQL进行操作详解
2024-01-28 23:16:53
Python中函数的多种格式和使用实例及小技巧
2022-12-18 10:22:32
SQL SERVER2012中新增函数之字符串函数CONCAT详解
2024-01-23 18:15:23
利用Anaconda完美解决Python 2与python 3的共存问题
2022-05-16 17:51:43
python三元运算符实现方法
2022-08-19 23:11:34
Python中列表、字典、元组、集合数据结构整理
2022-08-02 05:54:57
创建mysql表分区的方法
2024-01-16 11:48:37
python3 中使用urllib问题以及urllib详解
2022-01-09 05:59:16
JSP页面传参出现中文乱码的解决方案
2023-06-13 12:53:03
纯Javascript实现Windows 8 Metro风格实现
2024-04-19 10:41:31
javascript跨域刷新实现代码
2024-04-16 08:46:37
Python Django 数据库的相关操作详解
2024-01-26 21:02:46
SQL Server 2005日志文件损坏的处理方法
2008-12-02 14:36:00
js添加千分位的实现代码(超简单)
2023-08-25 07:43:29
利用sql函数生成不重复的订单号的代码
2012-01-05 19:02:55
pytorch训练时的显存占用递增的问题解决
2021-04-20 07:12:45
python把ipynb文件转换成pdf文件过程详解
2022-07-27 23:50:24