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입니다.