从一道js笔试题到==运算符的简析(2)
作者:afc163 来源:蓝色理想 发布时间:2010-05-10 20:28:00
标签:js,运算符,试题
看看ECMA-262(第80页)中怎么说的:
6.If Type(x) is Boolean, return the result of the comparison ToNumber(x) == y.
7.If Type(y) is Boolean, return the result of the comparison x == ToNumber(y).
也就是说,布尔值会被首先转换为数字,然后进行比较。true的数字值为1,false为0。所以2和-1都不能和true相等。
进一步看下面这个例子:
<SCRIPT LANGUAGE="JavaScript">
var a = "undefined";
var b = "false";
var c = "";
function assert (aVar) {
if (aVar==true) alert(true);
else alert(false);
}
assert(a);
assert(b);
assert(c);
</SCRIPT>
运行代码框
按照前面的思路,true会被转换为1,所以三个语句都会返回false。运行一下,发现的确如此。
下面将if(aVar==true)改为if(aVar)。
运行代码框
这时的运行结果是true,true,false。因为Boolean("undefined")、Boolean("false")、Boolean("")的结果为true,true,false。非空字符串转换为布尔值true。
最后还有一个例子,解释当==两边为字符串和数字时的比较规律。
运行代码框
发现没,这个"001"==true是为true的。
因为true先被转换为1了。然后参考ECMA的规则:
4.If Type(x) is Number and Type(y) is String, return the result of the comparison x == ToNumber(y).
5.If Type(x) is String and Type(y) is Number, return the result of the comparison ToNumber(x) == y.
字符串要被转换为数字,Number("001")的值也为1,所以结果为true。


猜你喜欢
- 本文实例为大家分享了python使用tkinter实现简单计算器的具体代码,供大家参考,具体内容如下class Counter: #引入t
- 获取一个类的所有子类def itersubclasses(cls, _seen=None): "
- 前言备受期待的django 2.0已经发布了,最大的一个变化就是不再支持python2.x版本了,这也为我们还在保守使用的2.x的同学们敲响
- ASP日期和时间函数我们经常会用到,本文列出了12个常用的asp日期和时间函数的语法及用法以作备忘!1.Now Now() 取
- 前言python图像识别一般基础到的就是tesseract了,在爬虫中处理验证码广泛使用。安装安装教程网上大都差不多,Windows下确实比
- oracle排序后如何获取第一条数据场景想要获取下列sql的数据的第一条select NEXT_FOLLOWUP_DATE fr
- 本文实例讲述了C#实现的ACCESS数据库操作类。分享给大家供大家参考,具体如下:这个是针对ACCESS数据库操作的类,同样也是从SQLHE
- 本文实例讲述了python 函数的缺省参数使用注意事项。分享给大家供大家参考,具体如下:python的函数支持4种形式的参数:分别是必选参数
- 如下所示:function makeAcquire($nUsers,$nAwards) { &
- 本文实例讲述了Vue 实现从小到大的横向滑动效果。分享给大家供大家参考,具体如下:最近项目中遇到一个需求,需要实现横向滑动,并且在滑动过程中
- LyScript 可实现自定义汇编指令的替换功能,用户可以自行编写一段汇编指令,将程序 * 定的通用函数进行功能改写与转向操作,此功能原理是简
- jQuery的serialize模块中有个r20正则 var r20 = /%20/g, jQuery.param方法中会将所有的"
- 表a aid adate 1 a1 2 a2 3 a3表b bid bdate 1 b1 2 b2 4 b4两个表a、b相连接,要取出id相
- android开发中在和服务器端接口对接时出现编码问题,从服务器端获取到的数据是 "\u8bbe\u59071ID-\u
- MySQL根据配置文件会限制Server接受的数据包大小。有时候大的插入和更新会受 max_allowed_packet 参数限制,导致写入
- ① 二维列表 根据给定的长和宽,以及初始值,返回一个二维列表:def initialize_2d_list(w, h, val=N
- 在我的上篇文章发出之后,我听到对“WEb2.0视觉风格”这个称谓的不认同声音。其实这并不出乎我的意料,因为,我在认真的开始思考“WEb2.0
- #HelloWorld是文件名称,Hello是类from HelloWorld import Hello调用,Hello类的方法:>&
- SQL Server数据库如何获取TEXT字段的内容长度的方法,是通过DATALENGTH函数来实现的,接下来我们就通过DATALENGTH
- 在我的前一篇教程《九宫格基本布局》中,我介绍了用相对定位加绝对定位的方法来制作九宫格的基本布局。这是一种比较符合人们惯性思维的方法,好像制作