비교 연산자
불린형 반환
- true가 반환되면 긍정,참,사실을 의미
- false가 반환되면 부정, 거짓, 사실이 아님을 의미
console.log(2 > 1); // true
console.log(2 == 1); //false
console.log(2 != 1); //true
문자열 비교
- 자바스크립트는 사전 순으로 문자열 비교
- 단어를 구성하는 문자 하나하나를 비교하여 등재 순서를 정하는 것과 같이 자바스크립트도 문자열을 구성하는 하나하나를 비교해가며 문자열을 비교
console.log("Z" > "A"); //true
console.log("Glow" > "Glee"); //true
console.log("Bee" > "Be"); //true
- 알고리즘은 다음과 같이 적용
- 두 문자열의 첫 글자를 비교
- 첫번째 문자열의 첫글자가 다른 문자열의 첫글자보다 크면(작으면), 첫 번째 문자열이 두번째 문자열보다 크다고(작다고) 결론 내고 비교를 종료
- 두 문자열의 첫글자가 같으면 두번째 글자를 같은 방식으로 비교
- 주의
- 정확히는 사전순이 아니라 유니코드 순
- 자바스크립트는 대 소문자를 따진다.
- 대문자 'A' 와 소문자 'a'를 비교 했을 때 소문자 'a'가 더 큽니다.
다른 형을 가진 값 간의 비교
- 불린값의 경우 true는 1, false는 0으로 변환 후 비교
console.log('2' > 1); //true 2를 1과 같은 타입으로 변환하여 비교 연산
- 흥미로운 상황
- 동시에 일어나지 않을 법한 두 상황이 동시에 일어나는 경우
- 동등 비교(==)시 true를 반환
- 논리 평가 시 값 하는 true, 다른 값 하나는 false를 반환
let a = 0;
console.log( Boolean(a) ); // false
let b = "0";
console.log( Boolean(b) ); // true
console.log(a == b); // true!
일치 연산자
- 동등 연사자 ==은 0과 false를 구별하지 못함
console.log(0 == false); //true
console.log(' ' == false); //true
- 일치 연산자 ===를 사용하면 형 변환 없이 값을 비교
- 일치 연산자는 엄격한 동등 연산자 자료형의 동등 여부까지 검사하기 떄문에 피연산자 a와 b의 형이 다를 경우 a === b는 즉시 false를 반환
console.log(0 === false);
null이나 undefined와 비교
- 일치 연산자 ===를 사용하여 null undefined를 비교
- 두 값의 자료형이 다르기 때문에 false를 반환
console.log( null === undefined); //false
- 동등 연산자 ==를 사용하여 null과 undefined를 비교
console.log( null == undefined); //true
- 산술 연산자나 기타 비교 연산자를 사용하여 null과 undefined를 비교
- null과 nudefined는 숫자형으로 변환 null은 0, undefined는 NaN으로 변합니다
null vs 0
console.log(null >0) (1) // false
console.log(null >0) (2) // false
console.log(null >0) (3) // true
- 동등 연산자 ==dhk 기타 비교 연산자 <, >, <=, >=의 동작 방식이 다르다.
1에서 null > 0이 거짓을, 3에서 null >= 0이 참을 반환하는 이유는 null이 숫자형으로 반환돼 0이기 때문
- 동등 연산자 ==는 피연산자가 undefined나 null일 때 형 변환을 하지 않는다. undefined와 null을 비교하는 경우에만 true를 반환 그 이외의 경우에는 false반환
비교가 불가능한 undefined
console.log(undefined > 0) (1)//false
console.log(undefined < 0) (2)//false
console.log(undefined == 0) (3)//false
- 1과 2에선 undefined가 nan으로 변환되는데 NaN이 피연산자인 경우 비교 연산자는 항상 fasle 반환
- undefined는 null이나 undefined와 같고, 이외의 값과는 같지 않기 때문에 (3)은 false 반환
위 내용은 javascript.info 사이트에서 공부한 내용을 정리