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 July 2015.

We'd love to hear more about your role and the company you work for
Please help us by answering a few questions.

Object.is() 정적 메서드는 두 값이 같은 값인지 결정합니다.

시도해 보기

console.log(Object.is("1", 1));
// Expected output: false

console.log(Object.is(NaN, NaN));
// Expected output: true

console.log(Object.is(-0, 0));
// Expected output: false

const obj = {};
console.log(Object.is(obj, {}));
// Expected output: false

구문

js
Object.is(value1, value2);

매개변수

value1

비교할 첫 번째 값.

value2

비교할 두 번째 값.

반환 값

두 인수가 같은 값인지 여부를 나타내는 불리언.

설명

Object.is()는 두 값이 같은 값인지 결정합니다. 다음 중 하나를 만족하면 두 값은 같습니다.

  • 둘 다 undefined

  • 둘 다 null

  • 둘 다 true 또는 둘 다 false

  • 둘 다 같은 순서로 같은 문자에 같은 길이인 문자열

  • 둘 다 같은 객체 (두 값 모두 메모리에서 같은 객체를 참조하는 것을 의미)

  • 둘 다 숫자이며

    • 둘 다 +0
    • 둘 다 -0
    • 둘 다 NaN
    • 둘 다 0이나 NaN이 아니고, 같은 값을 지님

Object.is()== 연산자와 같지 않습니다. == 연산자는 같음을 테스트하기 전에 양 쪽(이 같은 형이 아니라면)에 다양한 강제(coercion)를 적용하지만("" == falsetrue가 되는 것과 같은 행동을 초래), Object.is는 어느 값도 강제하지 않습니다.

Object.is()=== 연산자와도 같지 않습니다. Object.is()===의 유일한 차이는 부호 있는 0과 NaN 값들의 처리입니다. === 연산자(및 == 연산자)는 숫자값 -0+0을 같게 처리하지만, NaN은 서로 같지 않게 처리합니다.

예제

Object.is() 사용

js
// Case 1: 평가 결과는 ===을 사용한 것과 동일합니다
Object.is(25, 25); // true
Object.is("foo", "foo"); // true
Object.is("foo", "bar"); // false
Object.is(null, null); // true
Object.is(undefined, undefined); // true
Object.is(window, window); // true
Object.is([], []); // false
const foo = { a: 1 };
const bar = { a: 1 };
const sameFoo = foo;
Object.is(foo, foo); // true
Object.is(foo, bar); // false
Object.is(foo, sameFoo); // true

// Case 2: 부호 있는 0
Object.is(0, -0); // false
Object.is(+0, -0); // false
Object.is(-0, -0); // true

// Case 3: NaN
Object.is(NaN, 0 / 0); // true
Object.is(NaN, Number.NaN); // true

명세

Specification
ECMAScript® 2025 Language Specification
# sec-object.is

브라우저 호환성

같이 보기