首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JavaScript中相等与全等在比较的时候,你得知道如何转换操作数

首先,有一点编码经验的人都能感受到,确定两个变量是否相等是编程中的一个非常非常重要的操作(就如我们写if判断语句),在比较字符串,数值和布尔值的相等性时,问题还比较简单,但在涉及到对象的比较时,问题就得复杂了。早在ECMAScript标准中,规定先转换操作数在进行比较,但后来,人们开始质疑这种方式是否合理,所以出现了全等的概念。

一、聊一下相等与全等那点区别

相等和不相等 — 先转换再比较

全等和不全等 — 仅比较而不转换

举一个简单的例子:

"5" == 5 // true

先将字符串5转换成数字,在比较,结果就相等,下面来看一个全等的问题。

"55" === 55 // false

因为左边的55是字符串,右边是数字,数据类型不相等,所以不相等。返回就是false

当然,关于相等与不相等,它还有一些特殊情况,如null,undefined,NaN,false等之间的比较,这会涉及到一些比较规则性问题,接下来我会重点说一下,有关比较之前,如何转换操作数的问题。

二、如何转换操作数

全等不全等就没什么说的了,主要是相等和不相等会先转换在比较,且比较的两个操作符都会先转换(通常称为强制转型),然后再比较它们的相等性。下面说两个规则:

第一,操作转换时规则

1、操作数为布尔值,false转换为0,而true转换为1。

注意true == 1 返回true

而true == 2 返回false

2、如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转换为数值。

JavaScript中有三个函数可以把字符串转换成数值:Number,parseInt,parseFloat。如下代码所示:

3、如果一个操作数是对象,另一个操作数不是,则调用对象的valueOf()方法,用得到的原始值按照前面的规则进行比较。如下代码所示:

第二,遵循规则

两个操作符在进行比较时则要遵循下列一些规则。

1、null和undefined是相等的。

2、要比较相等性之前,不能将null和undefined转换成其它任何值。

3、如果有一个操作数是NaN,则相等操作符返回false,则不相等操作符返回true。重要提示一点:即使两个操作数都是NaN,相等操作符也返回false,因为按照规则,NaN不等于NaN。

4、如果两个操作数都是对象,则比较它们是不是同一个对象,如果两个操作数都指向同一个对象,则相等操作符返回true,否则返回false。

看一个例子:

null == undefined // true

5 == NaN // false

三、使用建议

相等(==) 和不相等(!=)操作符会在需要的情况下自动转换数据类型。但 全等(===)和不全等(!==)不会,它们会同时比较值和数据类型,这也使用它们要比相等(==)和不相等(!=)快。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180503A1OXJ400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券