본문 바로가기
개발(Development)/JS(자바스크립트)

[자바스크립트] 대소/동등/일치 비교 연산자와 Object.is()

by 카레유 2020. 12. 11.

# 동등/일치 비교 연산자

1. 동등 비교 연산자 : ==, !=

1) '값'만 비교 한다.

2) '타입' 일치 여부는 체크하지 않는다.

=> 암묵적 타입 변환이 발생해서 결과를 예측하기가 힘들다.

console.log(1 == '1'); // true
console.log(0 == ''); // true
console.log(true == 'true') // false
console.log(NaN == NaN); // false
// 경우에 따라 숫자는 타입이 변환 되고, 불리언은 안되고, 실수하기 쉽다.

 

 

2. 일치 비교 연산자 : ===, !==

1) '값'과 '타입'까지 일치해야만 true를 반환한다.

2) NaN은 체크하지 못한다. isNaN(값) 함수로 체크 필요.

console.log(1 === '1'); // false
console.log(0 === ''); // false
console.log(true === 'true') // false
console.log(NaN === NaN); // false
console.log(isNaN(NaN)); // true

 

 

3. Object.is(값1, 값2)

1) '값'과 '타입'이 일치해야만 true를 반환 (===, !== 일치 연산자와 동일)

2) NaN도 체크할 수 있다.

=> ES6부터 도입된 메서드.

console.log(Object.is(1, '1')); // false
console.log(Object.is(0, '')); // false
console.log(Object.is(true, 'true')); // false
console.log(Object.is(NaN, NaN)); // true

 

 

# 결론

1. ===, !== 일치 연산자를 쓰자.

* 단, NaN은 isNaN(값)으로 체크하자.

 

2. Object.is(값1, 값2)를 쓰는 것도 좋다.

 

3. ==, != 동등 연산자는 가급적 쓰지 말자.

 

 

# (참고) 대소 관계 비교 연산자

1. x > y : x가 더 크다.

 

2. x < y : x가 더 작다.

 

3. x >= y : x가 더 크거나 같다.

 

4. x <= y : x가 더 작거나 같다.

 

 

 

댓글