zoukankan      html  css  js  c++  java
  • es6~Object.is()

    Object.is()

    ES5 比较两个值是否相等,只有两个运算符:相等运算符(==)和严格相等运算符(===)。它们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0等于-0。JavaScript 缺乏一种运算,在所有环境中,只要两个值是一样的,它们就应该相等。

    ES6 提出“Same-value equality”(同值相等)算法,用来解决这个问题。Object.is就是部署这个算法的新方法。它用来比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致。

    Object.is('foo', 'foo')
    // true
    Object.is({}, {})
    // false

    不同之处只有两个:一是+0不等于-0,二是NaN等于自身。

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

    ES5 可以通过下面的代码,部署Object.is

    Object.defineProperty(Object, 'is', {
      value: function(x, y) {
        if (x === y) {
          // 针对+0 不等于 -0的情况
          return x !== 0 || 1 / x === 1 / y;
        }
        // 针对NaN的情况
        return x !== x && y !== y;
      },
      configurable: true,
      enumerable: false,
      writable: true
    });
  • 相关阅读:
    初识STM32标准库
    自己写库—构建库函数雏形
    使用寄存器点亮LED等
    新建工程---寄存器版
    什么是寄存器
    初识STM32
    ST-LINK驱动的安装
    MDK5使用技巧
    开发环境的搭建
    1行Python代码制作动态二维码
  • 原文地址:https://www.cnblogs.com/sunshineForFuture/p/10430882.html
Copyright © 2011-2022 走看看