반응형
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
참고 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Equality_comparisons_and_sameness
반응형
댓글