본문 바로가기
Language/JavaScript

[JavaScript] Object.is() - 두 개의 값이 같은지 확인 (ft. 이중등호(==), 삼중등호(===))

by 썸머워즈 2021. 10. 8.
반응형

Object.is() 메서드에 대해 알아보자.

 

▷ 구문

Object.is(value1, value2);

 

이중등호(==)와 삼중등호(===) 처럼 두개의 값을 비교해주는 메서드이다.

우선 Object.is() 메서드는 IE에서는 사용이 불가능하다는 점을 알아두고 예제를 통해 접해보자.


▷ 예제1) Object.is() 기본 사용법

Object.is('mine', 'mine'); // true
Object.is(window, window); // true
Object.is(undefined, undefined); // true
Object.is(null, null); // true

Object.is('mine', 'it'); // false
Object.is([], []); // false
Object.is({}, {}); // false

var record = {a : 1, b : 2};
Object.is(record, record); // true
Object.is(record, {a : 1, b : 2}); // false

var nums = [1, 2, 3 ,4];
Object.is(nums, nums); // true

var nums2 = nums;
Object.is(nums, nums2) // true

var nums2 = nums.slice();
Object.is(nums, nums2) // false

// 특별한 경우
Object.is(0, -0); // false
Object.is(-0, -0); // true
Object.is(NaN, 0/0); // true

Object.is() 메서드 사용법에 대해 어느정도 접해봤는데,

Object.is() 메서드와 함께 알아두면 좋은게 다들 많이 사용하는 이중등호(==) 와 삼중등호(===) 이다.

 

왜 알아두는게 좋냐하면 이 3개가 전부 두개의 값을 비교해주는것임에도 불구하고 서로 기준이 다르기 때문이다.

이중등호(==) 는 많이들 알다시피 느슨한 비교를 제공해주며,

삼중등호(===) 는 좀 더 엄격한 비교를 제공해준다.

Object.is() 메서드는 어느정도는 삼중등호(===) 와 비슷하다고 보면 될텐데 이 역시 완전히 같지는 않다.

 

아래 도표를 통해 뭐가 어떻게 다른지 확인해보자.

 

▷ 이중등호(==), 삼중등호(===), Object.is() 비교

value1 value2 == === Object.is
undefined undefined true true true
null null true true true
true true true true true
false false true true true
'foo' 'foo' true true true
0 0 true true true
+0 -0 true true false
+0 0 true true true
-0 0 true true false
0n -0n true true true
0 false true false false
"" false true false false
"" 0 true false false
'0' 0 true false false
'17' 17 true false false
[1, 2] '1,2' true false false
new String('foo') 'foo' true false false
null undefined true false false
null false false false false
undefined false false false false
{ foo: 'bar' } { foo: 'bar' } false false false
new String('foo') new String('foo') false false false
0 null false false false
0 NaN false false false
'foo' NaN false false false
NaN NaN false false true

참고 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object/is

 

Object.is() - JavaScript | MDN

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

developer.mozilla.org

 

참고 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Equality_comparisons_and_sameness

 

동치 비교 및 동일성 - JavaScript | MDN

ES2015에는 4가지 같음(equality) 알고리즘이 있습니다:

developer.mozilla.org

반응형


댓글

TOP