비교

비교 에서 JavaScript

12개의 연습 문제

비교 소개

숫자 비교하기

JavaScript에서는 다음 관계 연산자와 동등 연산자로 숫자를 비교할 수 있어요.

비교 연산자
보다 큼 a > b
보다 크거나 같음 a >= b
보다 작음 a < b
보다 작거나 같음 a <= b
(엄격) 같음 a === b
(엄격) 같지 않음 a !== b

비교 결과는 항상 불리언 값이에요. 즉 true나 false 중 하나예요.

1 < 3;
// => true

2 !== 2;
// => false

1 === 1.0;
// => true
// All numbers are floating-points, so this is different syntax
// for the exact same value.

문자열 비교하기

JavaScript에서는 위의 비교 연산자로 문자열도 비교할 수 있어요. 이때는 사전식 순서가 적용돼요. 모든 문자의 정확한 순서 목록은 여기에서 볼 수 있어요.

'Apple' > 'Pear';
// => false

'a' < 'above';
// => true

'a' === 'A';
// => false

숫자 값을 담고 있는 것처럼 보이지만 타입이 문자열인 두 변수를 비교할 때는 주의해야 해요. 사전식 순서 때문에 그 결과는 Number 타입의 값을 비교한 결과와 같지 않아요.

10 < 2;
// => false

'10' < '2';
// => true (because "1" comes before "2")

문자열을 비교하는 또 다른 방법은 localeCompare 메서드예요. 이 메서드로 다양한 옵션을 설정해서 문자열을 비교하는 방식을 조정할 수 있어요.

엄격한 동등성

JavaScript에서 동등 여부를 확인할 때 등호를 세 개 쓰는 게 궁금할 수도 있어요. ===는 엄격한 동등성 확인을 나타내요. 즉, 타입 변환이 일어나지 않고 타입이 다른 값은 항상 같지 않아요.

'3' === 3;
// => false
// The value on the left has type string, the value on the right
// has type number.

1 === 1n;
// => false
// The value on the left has type number, the value on the right
// has type bigint.

JavaScript에서 동등 여부를 확인할 때는 ===와 !==를 사용하는 게 권장돼요.

암시적 타입 변환 피하기

==와 !=도 있는데, 이는 느슨한 동등성 확인을 나타내요. 비교를 수행하기 전에 암시적 타입 변환을 적용하기 때문에 피하는 게 좋아요. 이런 경우의 결과는 예측하기 어렵고, 때로는 예상과 다를 수 있어요. 자세한 내용은 여기에서 읽어볼 수 있어요.

0 == false;
// => true

이론적으로는 타입이 다른 값도 비교할 수 있어요(예: "1" < 2). 그러면 결과가 true인지 false인지 판단하기 위해 값이 암시적으로 변환돼요. 느슨한 동등성 확인과 마찬가지로, 이것도 위에서 언급한 것과 같은 이유로 권장되지 않아요.

그럼 대신 어떻게 해야 할까요? 명시적 타입 변환을 적용하면 돼요. 그러면 비교를 수행하기 전에 값이 올바른 타입을 갖도록 보장할 수 있어요. 그러면 코드를 이해하기 더 쉽고 오류도 덜 발생해요.

GitHub에서 편집 링크가 새 창이나 탭에서 열려요

비교 배우기