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)에서 새롭게 도입된 비교 문법으로, 몇 가지 특별한 사항에서 동등 비교 ===가 가지는 한계를 극복하기 위해 만들어짐
그러나 여전히 객체 간 비교에 있어서는 자바스크립트의 특징으로 인해 ===와 동일하게 동작함
'Modern React Deep Dive > 01장 리액트 개발을 위해 꼭 알아야 할 자바스크립트' 카테고리의 다른 글
1.2.2 함수를 정의하는 4가지 방법 (0) | 2024.04.02 |
---|---|
1.2.1 함수란 무엇인가? (0) | 2024.04.02 |
1.1.4 리액트에서의 동등 비교 (0) | 2024.03.29 |
1.1.2 값을 저장하는 방식의 차이 (0) | 2024.03.29 |
1.1.1 자바스크립트의 데이터 타입 (0) | 2024.03.29 |