기본 비교 연산자
function biggerThanZero(value){
if(value !== null && value !== undefined) {
console.log(value > 0);
}else {
console.log("정확한 숫자를 입력해 주세요");
}
}
문법과 역할
- 보다 큼 / 작음: a > b, a < b
- 보다 크거나 같음 / 작거나 같음: a >= b, a <= b
- 동등 비교: a == b (값만 비교, 타입은 비교하지 않음)
- 예: 1 == '1'은 true를 반환한다.
- 엄격 동등 비교: a === b (값과 타입 모두 비교)
- 예: 1 === '1'은 false를 반환한다.
- 부등 비교: a != b (값만 비교, 같지 않으면 true)
- 엄격 부등 비교: a !== b (값과 타입 모두 비교, 둘 다 다르면 true)
// 비교 연산자의 기본 동작 예제
let num1 = 10;
let num2 = "10";
console.log(num1 == num2); // true (값만 비교)
console.log(num1 === num2); // false (값과 타입 비교)
console.log(num1 > 5); // true (10은 5보다 크다)
console.log(num1 <= 10); // true (10은 10보다 작거나 같다)
불린형 반환
동작 방식
비교 연산자는 항상 불린형 값을 반환한다:
- true: 비교 결과가 참일 때 반환.
- false: 비교 결과가 거짓일 때 반환.
// 비교 결과를 변수에 할당
let isGreater = 15 > 10;
console.log(isGreater); // true
let isEqual = "apple" == "banana";
console.log(isEqual); // false
문자열 비교
기본 동작
자바스크립트는 문자열을 유니코드(Unicode) 기준으로 비교한다. 이를 '사전편집 순서(lexicographical order)'라고도 한다.
- 대소문자 구분: 소문자가 대문자보다 크다 ('a' > 'A'는 true).
- 길이 비교: 동일한 접두사를 가진 문자열은 더 긴 문자열이 크다 ('Bee' > 'Be'는 true).
예제
// 문자열 비교의 기본 동작
console.log("Zebra" > "Apple"); // true (Z는 A보다 유니코드 값이 크다)
console.log("car" > "cat"); // false (r은 t보다 작다)
console.log("cat" > "ca"); // true (긴 문자열이 더 크다)
주의점
- 유니코드 값 기반 비교로 인해 사전 순서와 다를 수 있다.
- 예를 들어, 발음 구별 기호(diacritical marks)가 있는 문자는 일반 문자보다 더 크다고 판단한다.
// 유니코드 비교의 특이점
console.log("österreich" > "Zealand"); // true (ö는 o보다 유니코드 값이 크다)
다른 형을 가진 값 간의 비교
형 변환 규칙
자바스크립트는 서로 다른 자료형의 값을 비교할 때 내부적으로 숫자형으로 변환하여 비교한다.
console.log("5" > 3); // true ("5"는 숫자 5로 변환)
console.log("02" == 2); // true ("02"는 숫자 2로 변환)
- 불린값 변환: true는 1, false는 0으로 변환된다.
console.log(true == 1); // true
console.log(false == 0); // true
주의 사항
let x = 0;
let y = "0";
console.log(Boolean(x)); // false (숫자 0은 false)
console.log(Boolean(y)); // true (빈 문자열이 아니므로 true)
console.log(x == y); // true (비교 시 숫자형 변환 후 동일)
일치 연산자
동작 방식
===와 !==는 형 변환 없이 값을 비교한다.
// 일치 연산자 사용 예제
console.log(1 === "1"); // false (타입이 다름)
console.log(0 === false); // false (타입이 다름)
// 부등 연산자 사용 예제
console.log(1 !== "1"); // true (타입이 다름)
console.log(0 !== false); // true (타입이 다름)
null과 undefined
비교 규칙
- null과 undefined는 동등 비교(==) 시 true를 반환한다.
- 그러나, 일치 비교(===) 시 false를 반환한다.
console.log(null == undefined); // true
console.log(null === undefined); // false
산술 및 기타 비교
null과 undefined를 숫자와 비교하면 예상치 못한 결과를 얻을 수 있다.
// null 비교 예제
console.log(null > 0); // false
console.log(null == 0); // false
console.log(null >= 0); // true (숫자형 변환 시 0으로 취급)
// undefined 비교 예제
console.log(undefined > 0); // false (NaN 비교)
console.log(undefined == 0); // false
console.log(undefined < 0); // false
안전한 비교 방법
function isGreaterThanZero(value) {
if (value !== null && value !== undefined) {
console.log(value > 0);
} else {
console.log("값이 null 또는 undefined입니다.");
}
}
isGreaterThanZero(null); // 값이 null 또는 undefined입니다.
isGreaterThanZero(5); // true
요약
- 비교 연산자는 불린형 값을 반환한다.
- 문자열은 유니코드 값에 따라 비교된다.
- 서로 다른 자료형의 값을 비교하면 숫자형으로 변환 후 비교한다.
- null과 undefined는 특별한 비교 규칙을 따른다.
- 일치 연산자(===)를 사용하여 정확한 비교를 수행하자.
'바닐라 코드 > Java Script' 카테고리의 다른 글
12. 논리연산자 (0) | 2024.12.17 |
---|---|
11. if와 '?' (0) | 2024.12.16 |
9. 연산 (2) | 2024.12.11 |
8. 브라우저 알림창 띄우기 (0) | 2024.12.10 |
7. 자료형 변환 (1) | 2024.12.09 |