This page was translated from English by the community.Learn more and join the MDN Web Docs community.
Object.is()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015년 9월.
Object.is() 정적 메서드는 두 값이같은 값인지 결정합니다.
In this article
시도해 보기
console.log(Object.is("1", 1));// Expected output: falseconsole.log(Object.is(NaN, NaN));// Expected output: trueconsole.log(Object.is(-0, 0));// Expected output: falseconst obj = {};console.log(Object.is(obj, {}));// Expected output: false구문
js
Object.is(value1, value2);매개변수
반환 값
두 인수가 같은 값인지 여부를 나타내는 불리언.
설명
Object.is()는 두 값이같은 값인지 결정합니다. 다음 중 하나를 만족하면 두 값은 같습니다.
- 둘 다
undefined - 둘 다
null - 둘 다
true또는 둘 다false - 둘 다 같은 순서로 같은 문자에 같은 길이인 문자열
- 둘 다 같은 객체 (두 값 모두 메모리에서 같은 객체를 참조하는 것을 의미)
- 둘 다 숫자이며
Object.is()는== 연산자와 같지 않습니다.== 연산자는 같음을 테스트하기 전에 양 쪽(이 같은 형이 아니라면)에 다양한 강제(coercion)를 적용하지만("" == false가true가 되는 것과 같은 행동을 초래),Object.is는 어느 값도 강제하지 않습니다.
Object.is()는=== 연산자와도 같지 않습니다.Object.is()와===의 유일한 차이는 부호 있는 0과NaN 값들의 처리입니다.=== 연산자(및== 연산자)는 숫자값-0과+0을 같게 처리하지만,NaN은 서로 같지 않게 처리합니다.
예제
>Object.is() 사용
js
// Case 1: 평가 결과는 ===을 사용한 것과 동일합니다Object.is(25, 25); // trueObject.is("foo", "foo"); // trueObject.is("foo", "bar"); // falseObject.is(null, null); // trueObject.is(undefined, undefined); // trueObject.is(window, window); // trueObject.is([], []); // falseconst foo = { a: 1 };const bar = { a: 1 };const sameFoo = foo;Object.is(foo, foo); // trueObject.is(foo, bar); // falseObject.is(foo, sameFoo); // true// Case 2: 부호 있는 0Object.is(0, -0); // falseObject.is(+0, -0); // falseObject.is(-0, -0); // true// Case 3: NaNObject.is(NaN, 0 / 0); // trueObject.is(NaN, Number.NaN); // true명세
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-object.is> |
브라우저 호환성
같이 보기
core-js의Object.is폴리필- 동치 비교 및 동일성 — 동일성 내장 기능 3가지 모두 비교