专栏首页acoolgiser_zhuanlanJavaScript中的比较运算符

JavaScript中的比较运算符

比较运算符

当我们对Number做比较时,可以通过比较运算符得到一个布尔值:

2 > 5; // false
5 >= 2; // true
7 == 7; // true

实际上,JavaScript允许对任意数据类型做比较:

false == 0; // true
false === 0; // false

要特别注意相等运算符==。JavaScript在设计时,有两种比较运算符:

第一种是==比较,它会自动转换数据类型再比较,很多时候,会得到非常诡异的结果;

第二种是===比较,它不会自动转换数据类型,如果数据类型不一致,返回false,如果一致,再比较。

由于JavaScript这个设计缺陷,不要使用==比较,始终坚持使用===比较。

另一个例外是NaN这个特殊的Number与所有其他值都不相等,包括它自己:

NaN === NaN; // false

唯一能判断NaN的方法是通过isNaN()函数:

isNaN(NaN); // true

最后要注意浮点数的相等比较:

1 / 3 === (1 - 2 / 3); // false

这不是JavaScript的设计缺陷。浮点数在运算过程中会产生误差,因为计算机无法精确表示无限循环小数。要比较两个浮点数是否相等,只能计算它们之差的绝对值,看是否小于某个阈值:

Math.abs(1 / 3 - (1 - 2 / 3)) < 0.0000001; // true

摘录自:https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/001434499190108eec0bdf14e704a09935cd112e501e31a000

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • three.js中场景,相机,渲染器之间的关系

    摘自:http://www.hewebgl.com/article/getarticle/50

    acoolgiser
  • MongoDB踩坑总结

    参与的项目需要导出远程机器上的MongoDB的数据库,由于之前没有接触过MongoDB的数据库,所以出现了很多问题,现总结下。

    acoolgiser
  • VC中CTreeContrl实现响应单击或双击事件

    acoolgiser
  • 在Windows 10上使用Hyper-V创建VM

    如果您运行的是Windows 10并且系统硬件支持Hyper-V,则可以创建一个独立的存储空间来部署自己的虚拟机并使用它。您可以同时创建一个或多个虚拟机并运行它...

    CloudZ
  • 中文域名如何解析和绑定? 转

      虚拟主机或服务器需要绑定域名才能通过域名来访问,而中文域名不能直接绑定到主机,需要先将其转码成字符串后才能绑定。具体的方法就是找一个中文域名转码的网站,将你...

    双面人
  • 大数据营销企业财报分析—银橙传媒

    银橙传媒业务介绍 上海银橙文化传媒股份有限公司(NEEQ:830999)成立于2010年3月,是一家专注于为广告主、广告代理商提供基于大数据的精准营销服务的提供...

    数据猿
  • 欧洲信用卡终端机仍存在严重漏洞

    当美国准备转向使用“芯片和密码”模型的信用卡交易时,欧洲还在开心的使用传统的更加安全的人工方式进行交易。但是,欧洲现在的信用卡交易方式出现问题是迟早的事。 摘...

    FB客服
  • eBay 对静态资源加载的优化

    对于页面中引用 JS CSS 静态资源的处理,eBay 之前的主要模式是打包资源 每个页面中所需要的 JS 都打包为一个 JS 文件,放在页面的底部加载,CSS...

    dys
  • 基于python的appium例子

    版权声明:如需转载本文章,请保留出处! https://blog.csdn.net/xc_zhou/article/details/89643551 ...

    周小董
  • 开源 | CVPR2020 3D物体固有结构点的无监督学习

    学习三维形状的结构信息是计算机图形学和几何处理领域的一个基本问题。本文提出了一种简单但可解释的无监督方法,以三维结构点的形式来学习新的结构表示法。该方法对固有的...

    CNNer

扫码关注云+社区

领取腾讯云代金券