美文网首页
JS 中的相等

JS 中的相等

作者: Mr君 | 来源:发表于2020-06-16 16:12 被阅读0次

SameValueNonNumber 计算非数字类型x,y是否相同

规则:

  1. x 不是 Number 类型。
  2. x 和 y 是 相同类型。
  3. 如果 x 是 Undefined 类型,返回 true 。
    如果 x 是 Null 类型,返回 true 。
    如果 x 是 String 类型:当且仅当x,y字符序列完全相同(长度相同,每个位置上的字符也相同)时返回true,否则返回false
    如果 x 是 Boolean 类型:如果 x 和 y 都是true 或者 都是false,返回 true 。否则返回 false 。
    如果 x 是 Symbol 类型:如果x,y是相同的Symbol值,返回true,否则返回false
    如果 x 和 y 指向同一对象,返回 true 。否则返回 false 。

SameValueNonNumber 是 SameValue、SameValueZero、 === 的公共方法

SameValue

ES6中的Object.is()正是采用这种算法
下面是SameValue 与===的有区别的两种情况

  Object.is(NaN, NaN) // true
  Object.is(0, -0) // false

  NaN === NaN // false
   0 === -0 // true

SameValueZero

它与SameValue的区别主要在于0与-0是否相等
includes方法的内部采用SameValueZero方法

  const a = [0, NaN]
  a.includes(-0) // true
  a.includes(NaN) // true

还有以下方法中采用了SameValueZero

Array.prototype.includes
Map.prototype.delete
Map.prototype.has
Map.prototype.set
Set.prototype.delete
Set.prototype.has
Set.prototype.add
ArrayBuffer 和 DataView 部分方法

=== 严格相等运算

采用了 SameValueNonNumber算法
但是

NaN === NaN // false
0 === -0 // true

以下方法 内部采用了===

Array.prototype.indexOf
Array.prototype.lastIndexOf

相关文章

  • js中的【相等】

    先看一道坑爹的题目: 问:最终的结果是什么? 众所周知,js中==与===是有很大区别的,主要在于==会先尝试将两...

  • JS 中的相等

    SameValueNonNumber 计算非数字类型x,y是否相同 规则: x 不是 Number 类型。 x 和...

  • JS杂记

    1、Undefined 与 Null 的区别 Undefined 与 null 的值相等,但类型不相等。在js中,...

  • 关于js中的双等号问题

    js中存在==和===两种校验是否相等的运算符。 ==代表值相等 ===代表值和类型都相等 由于双等号的存在,使用...

  • 逻辑运算符、赋值运算符、关系运算符、相等运算符、条件运算符

    JS中为我们提供了三种逻辑运算符 赋值运算符 关系运算符 相等运算符 相等运算符用来比较两个值是否相等,如果相等会...

  • js中的相等运算符

    刚才看犀牛书,看到这个知识点,记录一下: 严格相等运算符“===” 相等运算符“==” 相等运算符和严格相等运算符...

  • []==[]为false,[]==![]为true

    JS真是博大精深啊,看似相等,其实不等,而看似不等,却是相等。 没错,你没有看错,JS就是这么不可思议! 这个问题...

  • 2019-06-10

    js基础知识 相等运算符: 相等运算符用来比较两个值是否相等,如果相等会返回True,否则返回flase 使用 =...

  • js世界中的四种相等

    js中有四种元语相等,分别为==,===, sameValue, sameValueZero,下面分别介绍一下其异...

  • 前端(运算符)

    与或运算 Unicode编码 相等运算符 条件运算符 js操作属性 js函数

网友评论

      本文标题:JS 中的相等

      本文链接:https://www.haomeiwen.com/subject/rkrlxktx.html