MarsPen / blog

3 stars 0 forks source link

【手写篇 - Day 04】实现 `Object.is()` #4

Open MarsPen opened 2 years ago

MarsPen commented 2 years ago

题目描述

Object.is 和 === 基于一致,除了以下情况:

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

Object.is(NaN, NaN) // true
NaN === NaN // false

请手动实现 Object.is()。

MarsPen commented 2 years ago

思路

代码

function is (a, b) {
  // NaN === NaN  return true
  if (a !== a) {
    return b !== b;
  }
  // -0 === 0
  if (a === 0 && b === 0) {
    // 1 / -0 is -Infinity and -Infinity === -Infinity
    return 1 / a === 1 / b;
  }

  return a === b;
}

补充知识