JavaScript 2.9
비교 연산자
불린형 반환
- 다른 연산자와 마찬가지로 비교 연산자 역시 값을 반환한다.
- 반환 값은 불린형이다.
문자열 비교
- 사전순(사전편집순)으로 문자열을 비교한다.
- 사전 뒤쪽의 문자열은 사전 앞쪽의 문자열보다 크다고 판단된다.
다른 형을 가진 값 간의 비교
- 비교하려는 값의 자료형이 다르면 자바스크립트는 이 값들을 숫자형으로 바꾼다.
- 불린 값의 경우 true는 1, false는 0으로 변환된 후 비교가 이루어진다.
일치 연산자
- 동등 연사자 ==는 0과 false를 구별하지 못한다.
- 피연산자가 빈문자열일때도 같은 문제가 발생한다.
- 그렇다면 0과 false는 어떻게 구별할 수 있는가?
- 일치 연산자 ===를 사용하면 형변환 없이 값을 비교할 수 있다.
- 일치 연산자는 엄격한 동등 연산자이다.
- 자료형의 동등 여부까지 검사하기 때문에 피연산자의 형이 다를 경우 false를 반환한다.
- 불일치 연산자 !== 는 부등 연산자 !=의 엄격한 형태이다.
null이나 undefined와 비교하기
- 일치 연산자 ===를 사용하여 null과 undefined를 비교하면 자료형이 다르기 때문에 거짓이 반환된다.
- 동등 연산자 ==를 사용해서 비교하면 특별한 규칙이 적용돼 참이 반환된다.
- 동등 연산자는 null과 undefined를 각별한 커플처럼 취급한다.
- 두 값은 자기들끼리는 잘 어울리지만 다른 값들과는 잘 어울리지 못한다.
- 산술 연산자나 기타 비교 연산자를 사용하여 비교했을 때 숫자형으로 변환된다.
- null은 0, undefinedsms NaN으로 변한다.
- null과 0을 비교했을 때
alert( null > 0 ); // (1) false // null이 0으로 변환된다.
alert( null == 0 ); // (2) false // null은 변환하지 않는다.
alert( null >= 0 ); // (3) true // null이 0으로 변환된다.
- undefined는 다른 값과 비교할 수 없다.
alert( undefined > 0 ); // false (1) // undefined가 NaN으로 변환된다.
alert( undefined < 0 ); // false (2) // undefined가 NaN으로 변환된다.
alert( undefined == 0 ); // false (3) // undefined는 null이나 undefined와 같고 그 이외의 값과는 같지 않다.