Object.is()

198 阅读1分钟

每天做个总结吧,坚持就是胜利!

    /**
        @date 2021-06-04
        @description 详解Object.is()函数
    */

壹(序)

Object.is()函数用于判断两个值是否相等。 判断值相等有以下三种方式:

  1. 相等==
  2. 全等===
  3. Object.is();

贰(区别)

  1. 使用==时会进行隐式转换,比如 '1' == 1,会先将字符串'1'转换为数字1,再进行比较,隐式转换的规则下次单独总结;
  2. 使用===时先判断类型,如果是不同类型直接返回false,相同类型再进行比较;其中NaN === NaN返回false0 === -0返回true;
  3. Object.is()===方法类似,但是NaN === NaN返回true0 === -0返回false

叁(使用)

console.log(Object.is(1, 1)); // true
console.log(Object.is('123', '123')); // true
console.log(Object.is(NaN, NaN)); // true
console.log(Object.is(0, -0)); // false

肆(手写实现)

手写实现Object.is()

const myIs = (val1, val2) => {
  if (Number.isNaN(val1) && Number.isNaN(val2)) {
    return true;
  }

  if ((val1 === 0 && val2 === -0) || (val1 === -0 && val2 === 0)) {
    return false;
  }

  return val1 === val2;
};

console.log(myIs(1, 1)); // true
console.log(myIs(true, true)); // true
console.log(myIs('123', '123')); // true
console.log(myIs(NaN, NaN)); // true
console.log(myIs(0, -0)); // false
console.log(myIs(-0, 0)); // false