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

JavaScript Object.is() 메서드 완벽 정리: 두 값이 같은지 비교하는 방법

Object.is()란 무엇인가?

Object.is()는 JavaScript에서 두 개의 값이 서로 같은지 여부를 확인할 때 사용하는 정적 메서드입니다.

Object.is()가 두 값을 '같다'고 판단하려면 다음 조건 중 하나를 만족해야 합니다.

  • 두 값이 모두 undefined이거나 모두 null인 경우
  • 두 값이 모두 true이거나 모두 false인 경우
  • 두 문자열의 길이가 같고, 문자가 동일하며, 순서까지 일치하는 경우
  • 두 값의 부호(극성)가 서로 같은 경우
  • 두 값이 모두 NaN인 경우

기본 문법

Object.is(val1, val2);

Object.is()는 두 개의 매개변수를 받아 두 값이 같은지 검사합니다. 값이 같으면 true를 반환하고, 다르면 false를 반환합니다.

Object.is()와 '==' 연산자의 차이점

Object.is()와 동등 연산자('==') 사이에는 한 가지 중요한 차이가 있습니다. 바로 +0과 -0을 비교할 때입니다. 이 경우 Object.is()는 false를 반환하지만, '==' 연산자는 true를 반환합니다.

이러한 결과로 미루어 볼 때, Object.is()는 단순히 값만 비교하는 것이 아니라 값의 부호까지도 꼼꼼하게 검사한다는 것을 알 수 있습니다. 또한 Object.is()는 NaN과 NaN을 비교할 때 true를 반환한다는 점에서, NaN은 자기 자신과도 같지 않다고 판단하는 '===' 연산자와도 차이가 있습니다.

예제 코드

<html>
<body>
<script>
    // 같은 문자, 같은 순서의 문자열 비교
    var val = Object.is("tutorialspoint", "tutorialspoint")
    document.write(val);
    document.write("</br>");
    // 부호(극성) 비교
    var pol = Object.is(-0, +0)
    document.write(pol);
    document.write("</br>");
    // 서로 다른 문자열 비교
    var uneq = Object.is("tutorialspoint!", "tutorialspoint")
    document.write(uneq);
    document.write("</br>");
    // 객체 비교
    var obj = Object.is({object : 1}, {object : 2})
    document.write(obj);
</script>
</body>
</html>

실행 결과

true
false
false
false

결과 해석

  • tutorialspoint vs tutorialspoint → true: 길이, 문자, 순서가 모두 같으므로 같은 값으로 판단됩니다.
  • -0 vs +0 → false: 부호가 다르기 때문에 Object.is()는 두 값을 다른 값으로 간주합니다.
  • tutorialspoint! vs tutorialspoint → false: 느낌표(!) 하나로 인해 문자열이 일치하지 않아 false가 반환됩니다.
  • {object: 1} vs {object: 2} → false: 객체는 참조 타입으로, 내용이 아니라 참조 주소를 비교하기 때문에 서로 다른 객체는 항상 false입니다.