1. 문자열 비교 알고리즘
- 두 문자열의 첫 글자를 비교합니다.
- 첫 번째 문자열의 첫 글자가 다른 문자열의 첫 글자보다 크면(작으면), 첫 번째 문자열이 두 번째 문자열보다 크다고(작다고) 결론 내고 비교를 종료합니다. (유니코드 순 - 소문자가 대문자보다 크다)
- 두 문자열의 첫 글자가 같으면 두 번째 글자를 같은 방식으로 비교합니다.
- 글자 간 비교가 끝날 때까지 이 과정을 반복합니다.
- 비교가 종료되었고 문자열의 길이도 같다면 두 문자열은 동일하다고 결론 냅니다. 비교가 종료되었지만 두 문자열의 길이가 다르면 길이가 긴 문자열이 더 크다고 결론 냅니다.
alert( 'Z' > 'A' ); // true
alert( 'Glow' > 'Glee' ); // true
alert( 'Bee' > 'Be' ); // true
2. 다른 형 간의 비교
- 다른 형을 숫자형으로 바꾸어 비교 진행.
- true = 1, false = 0 으로 바뀌어 비교 진행.
3. 일치 연산자 "===", 불일치 연산자 "!=="
JS 는 "==" 연산자가 형이 다른 피연산자를 비교할 때 피연산자를 자동으로 숫자형으로 바꿔버린다.
alert(0 == false) 와 alert( '' == false); 가 모두 true 로 나오는 것도 이 때문.
따라서 JS는 특이한 일치 연산자(===) 라는 것을 사용하여, 형 변환 없이 값을 비교한다.
엄격한 동등 연산자이기 때문에, 자료형을 파악하여 비교하므로 alert(0===false) 는 false 라고 나오게된다.
마찬가지로 불일치 연산자 !== 는 != 보다 엄격하다.
4. null 과 undefined 비교하기
alert( null === undefined ); // false
- === 로 비교하면 당연히 두 자료형이 다르므로 false 반환.
alert( null == undefined ); // true
- == 연산자는 null과 undefined 에 특별한 규칙을 적용하여 true 로 반환시켜버린다.
* 산술, 비교연산자로 비교해보면 숫자형으로 변환된다. (null 은 0으로, undefined 는 NaN 으로)
alert( null > 0 ); // (1) false
alert( null == 0 ); // (2) false
alert( null >= 0 ); // (3) true
- 동등연산자 == 는 피연산자가 undefined or null 일 때 형 변환을 하지 않으므로 false 가 반환된다.
- 오직 undefined 와 null 을 비교하는 경우에만 true 를 반환하고, 그 외의 경우 (null 이나 undefined 를 다른 값과 비교할 때) 무조건 false 를 반환한다.
alert( undefined > 0 ); // false (1)
alert( undefined < 0 ); // false (2)
alert( undefined == 0 ); // false (3)
- undefined 는 다른 값과 비교하면 항상 false 를 반환한다.
- (1), (2) 는 undefined 가 NaN 으로 변환되는데, NaN이 피연산자인 경우 비교연산자는 항상 false 를 반환한다.
- (3)은 undefined 는 null 혹은 자기자신과만 같고, 그 외의 값과는 같지 않으므로 false 를 반환한다.
★ null 이나 undefined 가 될 수 있는 변수가 비교연산자의 피연산자로 올 때는 주의할 것
'언어 > JavaScript' 카테고리의 다른 글
| 논리 연산자 (0) | 2025.03.24 |
|---|---|
| 조건문 (0) | 2025.03.21 |
| 연산자 주의사항 요약 (0) | 2025.03.19 |
| 형 변환 (0) | 2025.03.19 |
| alert, prompt, confirm (0) | 2025.03.18 |