zoukankan      html  css  js  c++  java
  • ES标准中的相等比较算法 SameValue SameValueZero

    1、相等比较算法

    • The Abstract Equality Comparison Algorithm (==)
    • The Strict Equality Comparison Algorithm (===)
    • SameValue (Object.is())
    • SameValueZero (暂未提供API)

    2、SameValue

    对于前端研发来说,== 和 === 比较算法肯定已经深入了解了。

    对于熟练使用ES6的小伙伴,多知道Object.is()这个方法:

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

    而Object.is内部采用的比较算法就是SameValue(x, y),而它与 === 的区别也正是这两种情况。

    3、SameValueZero

    但是你在使用es6中有没有疑惑这种情况:

      const s = new Set()
      s.add(0)
      s.add(NaN)
      s.has(-0) // true
      s.has(NaN) // true

    是不是与上述的三种算法的表现多不一样,这就是第四种比较算法SameValueZero,它与SameValue的区别主要在于0与-0是否相等。

    所以你在实践includes方法时,遇到:

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

    就不用大惊小怪了,因为includes内部使用的比较算法就是SameValueZero。

  • 相关阅读:
    Jmeter +Maven+jenkins+eclipse 接口自动化测试
    感知机
    第1章 统计学习方法概论
    java jdk安装 以及myeclipse安装
    邻接表
    c语言 文件写入和读取
    c++ string
    线程-run和start
    Transfer learning across two sentiment classes using deep learning
    层次遍历
  • 原文地址:https://www.cnblogs.com/mengfangui/p/9343163.html
Copyright © 2011-2022 走看看