Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

자바스크립트 Object.is() 메서드로 값 비교하기 – ==, ===와의 차이점

Object.is() 메서드란?

Object.is() 메서드는 ES6(ES2015)에서 새롭게 도입된 기능으로, 두 값을 비교하는 데 사용됩니다. 비교 대상은 숫자나 문자열 같은 원시 타입(primitive)일 수도 있고 객체일 수도 있습니다.

이 메서드는 기존의 == 또는 === 연산자보다 한층 더 정밀하고 직관적인 비교를 수행한다는 점이 큰 특징입니다.

=== 연산자와의 차이점

Object.is()는 === 연산자와 거의 동일하게 작동하지만, 다음 두 가지 경우에서 서로 다른 결과를 반환합니다.

  • NaN 비교: Object.is(NaN, NaN)은 true를 반환하지만, NaN === NaN은 false를 반환합니다.
  • +0과 -0 비교: Object.is(0, -0)은 false를 반환하지만, 0 === -0은 true를 반환합니다.

동등성 비교 예제 코드

다음은 Object.is()를 활용해 객체를 비교하는 전체 예제 코드입니다.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
    body {
        font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
    }
    .result {
        font-size: 18px;
        font-weight: 500;
        color: blueviolet;
    }
</style>
</head>
<body>
<h1>Object.is() equality comparsion</h1>
<div class="result"></div>
<button class="Btn">Click here</button>
<h3>Click on the above button to compare objects using Object.is()</h3>
<script>
    let resEle = document.querySelector(".result");
    let BtnEle = document.querySelector(".Btn");
    let obj = { a: 11, b: 22 };
    let obj1 = { a: 11, b: 22 };
    let obj2 = obj;
    BtnEle.addEventListener("click", () => {
        if (Object.is(obj, obj1)) {
            resEle.innerHTML = "obj = obj1";
        } else {
            resEle.innerHTML = "obj != obj1 <br>";
        }
        if (Object.is(obj, obj2)) {
            resEle.innerHTML += "obj = obj2";
        }
    });
</script>
</body>
</html>

코드 설명

  • obj와 obj1: 내용은 같지만 서로 다른 메모리 주소를 참조하는 별개의 객체이므로, Object.is(obj, obj1)은 false를 반환합니다.
  • obj와 obj2: obj2는 obj와 동일한 객체를 참조하므로, Object.is(obj, obj2)는 true를 반환합니다.

즉, Object.is()는 객체를 비교할 때 속성값이 아니라 참조(reference)가 같은지를 판단합니다.

실행 결과

페이지를 실행하면 다음과 같은 초기 화면이 나타납니다.

자바스크립트 Object.is() 메서드로 값 비교하기 – ==, ===와의 차이점

'CLICK HERE' 버튼을 클릭하면 아래와 같이 비교 결과가 화면에 표시됩니다.

자바스크립트 Object.is() 메서드로 값 비교하기 – ==, ===와의 차이점