关灯
开启左侧

javascript运算符之==和=== 【你不知道的应用】

[复制链接]
doubleyong 发表于 2018-12-3 09:17:38 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
 
本帖最后由 doubleyong 于 2018-12-3 09:18 编辑

一、== :判断两个数是否相等,在比较之前会自动转化类型再做比较。为确定两个运算数是否相等,这两个运算符都会进行类型转换。

执行类型转换的规则如下:
1、如果一个运算数是 Boolean 值,在检查相等性之前,把它转换成数字值。false 转换成 0,true 为 1。
2、如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字。
3、如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串。
4、如果一个运算数是对象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字。

在比较时,该运算符还遵守下列规则:

1、值 null 和 undefined 相等。
2、在检查相等性时,不能把 null 和 undefined 转换成其他值。
3、如果某个运算数是 NaN,等号将返回 false,非等号将返回 true。
4、如果两个运算数都是对象,那么比较的是它们的引用值。如果两个运算数指向同一对象,那么等号返回 true,否则两个运算数不等。

重要提示:即使两个数都是 NaN,等号仍然返回 false,因为根据规则,NaN 不等于 NaN

二、=== :全等号由三个等号表示(===),只有在无需类型转换运算数就相等的情况下,才返回 true。

三、非全等号由感叹号加两个等号(!==)表示,只有在无需类型转换运算数不相等的情况下,才返回 true

下面来看一道面试题 ,对上面知识点的应用
  1. var a = ?
  2. if(a == 1 && a == 2 && a == 3) {
  3.   console.log('Hello World!');
  4. }
复制代码

如上: a 等于什么的时候? , 可以满足条件,输出hello world .

答案:
  1. const a = {
  2.   i: 1,
  3.   toString: function () {
  4.     return a.i++;
  5.   }
  6. }
  7. if(a == 1 && a == 2 && a == 3) {
  8.   console.log('Hello World!');
  9. }
  10. // Hello World!
复制代码

 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

排行榜
关闭

站长推荐上一条 /1 下一条

官方微信

全国服务热线:

400-0708-360

公司地址:国家西部信息安全产业基地(成都市高新区云华路333号)

邮编:610000    Email:2908503813@qq.com

Copyright   ©2015-2016  EOIT论坛Powered by©Discuz!    ( 蜀ICP备11000634号-7 )