javascript高级程序设计之相等操作符
来源:互联网 发布:网络优化工程师 知乎 编辑:程序博客网 时间:2024/06/01 15:28
在涉及到对象的比较时,ECMAScript提供两组操作符:相等和不相等-----先转换再比较,全等和不全等-------仅比较而不转换
1,相等和不相等
ECMAScript中的相等操作符由两个等于号(==)表示,如果两个操作数相等,则返回true,而不相等操作符由叹号后跟等于号(!=)表示,如果两个操作数不相等,则返回true.这两个操作符都会先转换操作数(通常为强制转型),然后再比较它们的相等性.
在转换不同的数据类型时,相等和不相等操作符遵循下列基本规则:
如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值---false转换为0,而true为1;
如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转换为数值;
如果一个操作数是对象,另一个操作数不是,则调用对象的valueof()方法,用等到的原始值按照前面的规则进行比较;
这两个操作符在进行比较时则要遵循下列规则
null和undefined是相等的
要比较相等性之前,不能将null和undefined转换成其他任何值.
如果有一个操作数是NaN,则相等操作符返回false,而不相等操作符返回true.重要提示:即使两个操作数都是NaN,相等操作符也返回false;因为按照规则,NaN不等于NaN.
如果两个操作数都是对象,则比较它们是不是同一个对象.如果两个操作数都指向同一个对象,则相等操作符返回true,否则,返回false;
特殊情况比较结果:
null == undefined//true
"NaN" == NaN//true
5 == NaN //false
NaN == NaN //false
NaN != NaN //true
false == 0 //true
true == 1 //true
true == 2 //false
undefined == 2 //false
null == 0 //false
"5" == 5 //true
2全等和不全等
除了在比较之前不转换操作数之外,全等和不全等操作符与相等和不相等操作符没有什么区别
全等操作符由3 个等号(===)表示,它只在两个操作数未经转换就相等的情况下返回true,
"55" == 55; //true
"55" === 55; //false
在这个例子中,第一个比较使用的是相等操作符比较字符串"55"和数值55,结果返回了true.如前所述,这是因为字符串"55"先被转换成了数值55,然后再与另一个数值55进行比较.第二个比较使用了全等操作符,以不转换数值的方式比较同样的字符串和值.在不转换的情况下,字符串当然不等于数值,因此结果就是false.
不全等操作符由一个叹号后跟两个等号(!==)表示,它在两个操作数未经转换就不相等的情况下返回true.
由于相等和不相等操作符存在类型转换问题,而为了保持代码中数据类型的完整性,我们推荐使用全等和不全等操作符
- javascript高级程序设计之相等操作符
- JavaScript高级程序设计之基本概念之相等操作符第3.5.7讲笔记
- JavaScript高级程序设计之基本概念之相等操作符第3.5.8讲笔记
- JavaScript高级程序设计第三章之操作符
- javascript高级程序设计笔记--js操作符
- 《JavaScript高级程序设计》读书笔记--2-操作符
- javascript之高级程序设计
- JavaScript高级程序设计之基本概念之关系操作符第3.5.6讲笔记
- JavaScript高级程序设计之基本概念之操作符之位操作符第3.5.2讲笔记
- JavaScript高级程序设计之基本概念之操作符之布尔操作符第3.5.3讲笔记
- JavaScript高级程序设计之基本概念之操作符之乘性操作符第3.5.4讲笔记
- JavaScript高级程序设计之基本概念之操作符之加性操作符第3.5.5讲笔记
- javascript之高级程序设计二
- JavaScript高级程序设计之基本概念之操作符之一元操作符第3.5.1讲笔记
- 《JavaScript高级程序设计》笔记——chapter3 操作符
- javascript高级程序设计笔记(一)语法和操作符
- [Javascript 高级程序设计]学习心得记录5 操作符和语句
- JavaScript高级程序设计之DOM之DOM 操作技术之操作表格第10.2.3讲
- 分支-09. 分段计算居民水费(10)
- Java线程(八):锁对象Lock-同步问题更完美的处理方式
- CentOS Pureftpd 使用Mysql数据库进行管理用户
- 设置html表格无边框
- Json的拼装以及解析的简单工具
- javascript高级程序设计之相等操作符
- QT技术应用_2D绘图(转)
- Fragment+ViewPager 不预加载下一个Fragment
- Installing Zabbix on Ubuntu 14.04
- firebird外置函数
- UVA 299 Train Swapping(冒泡排序)
- sqlite分页查询
- String.Format in javascript
- sgu126