본문 바로가기

바닐라 코드/Java Script

10. 비교연산자

기본 비교 연산자

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