본문 바로가기
Modern React Deep Dive/01장 리액트 개발을 위해 꼭 알아야 할 자바스크립트

1.1.3 자바스크립트의 또 다른 비교 공식, Object.is

by Whiimsy 2024. 3. 29.

1.1.3 자바스크립트의 또 다른 비교 공식, Object.is

Object.is

  • Object.is는 두 개의 인수를 받으며, 이 인수 두 개가 동일한지 확인하고 반환하는 메서드임

  • ==나 ===와 다른 점

    • == vs. Object.is: == 비교는 같음을 비교하기 전에 양쪽이 같은 타입이 아니라면 강제로 형변환(type casting)을 한 후에 비교함. 하지만 Object.is는 이러한 작업하지 않음. 즉, ===와 동일하게 타입이 다르면 그냥 false

    • === vs. Object.is: 아래처럼 Object.is가 좀 더 개발자가 기대하는 방식으로 정확하게 비교

    • -0 === +0 // true
      Object.is(-0, +0) // false
      
      Number.NaN === NaN // false
      Object.is(Number.NaN, NaN) // ture
      
      NaN === 0 / 0 // false
      Object.is(NaN, 0 / 0) // true
  • 주의할 점은, Object.is를 사용한다 하더라도 객체 비교에는 별 차이가 없다는 것, 객체 비교는 객체 비교 원리와 동등

  • Object.is({}, {}) // false
    
    const a = {
      hello: 'hi',
    }
    const b = a
    
    Object.is(a, b) // true
    a === b // true
  • ES6(ECMAScript 2015)에서 새롭게 도입된 비교 문법으로, 몇 가지 특별한 사항에서 동등 비교 ===가 가지는 한계를 극복하기 위해 만들어짐

  • 그러나 여전히 객체 간 비교에 있어서는 자바스크립트의 특징으로 인해 ===와 동일하게 동작함