- 변수의 값을 어떤 값 또는 다른 변수와 비교할 때 사용하는 것이 비교 연산자(Cpmparison Operator)입니다.
불린형 반환
다른 연산자와 마찬가지로 비교 연산자 역시 값을 반환합니다. 반환 값은 불린형입니다.
- true가 반환되면, ‘긍정’, ‘참’, '사실’을 의미합니다.
- false가 반환되면, ‘부정’, ‘거짓’, '사실이 아님’을 의미합니다.
문자열 비교
- 자바스크립트는 '사전’순으로 문자열을 비교합니다. '사전편집(lexicographical)'순 이라고 불리기도 하는 이 기준을 적용하면 사전 뒤쪽의 문자열은 사전 앞쪽의 문자열보다 크다고 판단됩니다.
문자열 비교 시 적용되는 알고리즘은 다음과 같습니다.
- 두 문자열의 첫 글자를 비교합니다.
- 첫 번째 문자열의 첫 글자가 다른 문자열의 첫 글자보다 크면(작으면), 첫 번째 문자열이 두 번째 문자열보다 크다고(작다고) 결론 내고 비교를 종료합니다.
- 두 문자열의 첫 글자가 같으면 두 번째 글자를 같은 방식으로 비교합니다.
- 글자 간 비교가 끝날 때까지 이 과정을 반복합니다.
- 비교가 종료되었고 문자열의 길이도 같다면 두 문자열은 동일하다고 결론 냅니다. 비교가 종료되었지만 두 문자열의 길이가 다르면 길이가 긴 문자열이 더 크다고 결론 냅니다.
다른 형을 가진 값 간의 비교
- 비교하려는 값의 자료형이 다르면 자바스크립트는 이 값들을 숫자형으로 바꿉니다.
- 불린값의 경우 true는 1, false는 0으로 변환된 후 비교가 이뤄집니다.
일치 연산자
- 동등 연산자(equality operator) ==은 0과 false를 구별하지 못합니다.
- 피연산자가 빈 문자열일 때도 같은 문제가 발생하죠.
alert( '' == false ); // true
- 그렇다면 0과 false는 어떻게 구별할 수 있을까요?
- 일치 연산자(strict equality operator) ===를 사용하면 형 변환 없이 값을 비교할 수 있습니다.
null이나 undefined와 비교하기
- null이나 undefined를 다른 값과 비교할 땐 예상치 않은 일들이 발생합니다.
- 동등 연산자 ==를 사용하여 null과 undefined를 비교
alert( null == undefined ); // true
null vs 0
null과 0을 비교해 봅시다.
alert( null > 0 ); // (1) false
alert( null == 0 ); // (2) false
alert( null >= 0 ); // (3) *true*
비교가 불가능한 undefined
undefined를 다른 값과 비교해서는 안 됩니다.
alert( undefined > 0 ); // false (1)
alert( undefined < 0 ); // false (2)
alert( undefined == 0 ); // false (3)
요약
- 비교 연산자는 불린값을 반환합니다.
- 문자열은 문자 단위로 비교되는데, 이때 비교 기준은 '사전’순입니다.
- 서로 다른 타입의 값을 비교할 땐 숫자형으로 형 변환이 이뤄지고 난 후 비교가 진행됩니다(일치 연산자는 제외).
- null과 undefined는 동등 비교(==) 시 서로 같지만 다른 값과는 같지 않습니다.
- null이나 undefined가 될 확률이 있는 변수가 > 또는 <의 피연산자로 올 때는 주의를 기울이시기 바랍니다. null, undefined 여부를 확인하는 코드를 따로 추가하는 습관을 들이길 권유합니다.
'모던 javascript 튜토리얼' 카테고리의 다른 글
논리 연산자 (0) | 2022.06.06 |
---|---|
if와 '?'를 사용한 조건 처리 (0) | 2022.06.05 |
기본 연산자와 수학 (0) | 2022.06.02 |
형 변환 (0) | 2022.06.01 |
alert, prompt, confirm을 이용한 상호작용 (0) | 2022.05.31 |