美文网首页
JavaScript同值相等(Object.is)

JavaScript同值相等(Object.is)

作者: ChrisFang | 来源:发表于2019-03-23 14:50 被阅读0次

语法:

Object.is(value1, value2);

value1跟value2表示两个需要比较的值。返回值是一个Boolean值。

  • 两个值都是undefined
  • 两个值都是null
  • 两个值都是true or false
  • 两个值都是相同的字符按照相同的顺序组成的字符串;
  • 两个值都指向同一个对象;
  • 两个值都是数组并且
    1. 都是+0
    2. 都是-0
    3. 都是NaN
    4. 都是初0和NaN以外的其他数字
    这种相等性判断逻辑和传统的 == 运算不同,== 运算符会对它两边的操作数做隐式类型转换(如果它们类型不同),然后才进行相等性比较,(所以才会有类似 "" == false 等于 true的现象),但 Object.is 不会做这种类型转换。

这与 === 运算符的判定方式也不一样。=== 运算符(和== 运算符)将数字值 -0+0 视为相等,并认为 Number.NaN 不等于 NaN

Object.is('foo', 'foo');     // true
Object.is(window, window);   // true

Object.is('foo', 'bar');     // false
Object.is([], []);           // false

var foo = { a: 1 };
var bar = { a: 1 };
Object.is(foo, foo);         // true
Object.is(foo, bar);         // false

Object.is(null, null);       // true

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

polyfill

if (!Object.is) {
  Object.is = function(x, y) {
    // SameValue algorithm
    if (x === y) { // Steps 1-5, 7-10
      // Steps 6.b-6.e: +0 != -0
      return x !== 0 || 1 / x === 1 / y;
    } else {
      // Step 6.a: NaN == NaN
      return x !== x && y !== y;
    }
  };
}

相关文章

  • JavaScript同值相等(Object.is)

    语法: value1跟value2表示两个需要比较的值。返回值是一个Boolean值。 两个值都是undefine...

  • ES6学习笔记(八):对象的扩展

    1.属性、方法的简写 Object.is() ES6提出了同值相等算法,用来比较两个值是否严格相等,与严格比较运算...

  • es6学习-扩展对象的功能性

    更好的判断是否相等 Object.is():方法判断两个值是否是相同的值,Object.is 不会做这种类型转换。...

  • 对象新增的一些方法

    Object.is() Object.is()用来比较两个值是否严格相等,与 "==="行为基本一致 不同之处有两...

  • es6 新语法

    ES6的Object.is()超越ES5 比较两个值是否相等 ES5 比较两个值是否相等,只有两个运算符:相等运算...

  • 15- Object 扩展

    1、Object.is() ES5 比较两个值是否相等,只有两个运算符:相等运算符(==)和严格相等运算符(===...

  • 阮一峰ES6教程读书笔记(六)对象的新增方法

    1. Object.is() 在ES6之前我们总是通过相等运算符==或者严格相等运算符===去判断两个值是否相等,...

  • 对象的扩展

    Object.is() ES5比较两个值是否相等,只有两个运算符:相等运算符(==)和严格相等运算符(===)。它...

  • 对象的扩张

    Object.is() ES5比较两个值是否相等,只有两个运算符:相等运算符(==)和严格相等运算符(===)。它...

  • ES6对象的新增方法

    Object.is()Object.assign() 1.Object.is() ES5 比较两个值是否相等,只有...

网友评论

      本文标题:JavaScript同值相等(Object.is)

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