基本描述

语法

Object.is(value1, value2);

参数

  • value1 需要比较的第一个值
  • value2 需要比较的第二个值

返回值

返回布尔值,表示value1和value2是否相等

polyfill

比较两个变量是否相等,这个直接用===不行吗?绝大部分情况是可行的,但是有例外。最容易想出来的例外是NaN,毕竟NaN不等于NaN。这个情况写个特殊的ifelse没啥难度。

还有一个特殊情况是+0和-0,===认为+0和-0是相等的。我们如何区分+0和-0呢?我们可以利用+Infinity-Infinity不一致这个特性。

if (!Object.is) {
  Object.is = function(x, y) {
    if (x === y) { 
      return x !== 0 || 1 / x === 1 / y;
    } else {
      return x !== x && y !== y;
    }
  };
}

MDN提供的polyfill就是对上面描述的实现。

默默觉得这个函数应用价值不大。

results matching ""

    No results matching ""