JS LAB
JS 1.7 · 1부. 기본 문법

비교와 논리 연산자

=== 와 == 의 차이, 그리고 조건을 조합하는 방법입니다.

예상 학습 시간 14분 실행 단추가 있는 예제는 고쳐서 실행해 볼 수 있습니다 난이도 입문
개념 설명

참인지 거짓인지 묻습니다

두 값을 비교하면 truefalse 가 나옵니다. 다음 단원의 조건문이 이 결과를 보고 실행할 코드를 정합니다.

  • > < >= <= — 크기를 비교합니다.
  • === — 값과 타입이 모두 같은지 봅니다.
  • !== — 값이나 타입이 다른지 봅니다.
최소 예제 · 편집 가능

=== 와 == 의 차이

=== 는 타입까지 같아야 참입니다. == 는 타입이 다르면 한쪽을 바꿔 맞춘 뒤 비교합니다.

script.js
console.log(1 === 1);
console.log(1 === "1");
console.log(1 == "1");
console.log(0 == false);
출력
true false true true

셋째 줄과 넷째 줄이 문제입니다. 숫자와 글자가, 숫자와 참·거짓이 같다고 나옵니다. 이렇게 몰래 바뀌는 것이 버그가 되므로 언제나 === 를 사용합니다.

상세 사용법

크기 비교

script.js
const age = 19;

console.log(age > 19);
console.log(age >= 19);
console.log(age < 19);
console.log(age !== 20);
출력
false true false true

>= 는 "크거나 같다" 입니다. 등호가 뒤에 붙습니다.

상세 사용법

조건을 여러 개 묶기

&& 는 양쪽이 모두 참일 때 참이고, || 는 한쪽만 참이어도 참입니다. ! 는 참과 거짓을 뒤집습니다.

script.js
const age = 20;
const isMember = true;

console.log(age >= 19 && isMember);
console.log(age < 19 || isMember);
console.log(!isMember);
출력
true true false

&& 는 왼쪽이 거짓이면 오른쪽을 보지 않습니다. || 는 왼쪽이 참이면 오른쪽을 보지 않습니다.

상세 사용법

참으로 여겨지는 값

참·거짓이 아닌 값도 조건 자리에 놓이면 참이나 거짓으로 다뤄집니다. 거짓으로 다뤄지는 것은 여섯 가지뿐이고, 나머지는 모두 참입니다.

script.js
console.log(Boolean(0));
console.log(Boolean(""));
console.log(Boolean(null));
console.log(Boolean(undefined));

console.log(Boolean(1));
console.log(Boolean("0"));
출력
false false false false true true

거짓으로 다뤄지는 여섯 가지는 false · 0 · "" · null · undefined · NaN 입니다. 마지막 줄을 보세요. 빈 글자는 거짓이지만 "0" 은 글자가 들어 있어 참입니다.

흔한 실수

처음에 자주 걸리는 것

1. = 와 === 를 혼동합니다

= 하나는 값을 넣는 것이고, === 는 비교하는 것입니다. 조건 자리에 = 를 적으면 비교가 아니라 값이 들어갑니다.

if (age = 19)   // 비교가 아니라 19를 넣습니다
2. == 를 사용합니다

0 == "" 이 참입니다. 타입이 다른데도 같다고 나오는 경우가 많아 찾기 어려운 버그가 됩니다. 언제나 === 를 사용하세요.

3. 범위를 수학처럼 적습니다

1 < age < 20 은 뜻대로 동작하지 않습니다. 왼쪽부터 차례로 계산되어 엉뚱한 결과가 나옵니다. && 로 나눠 적어야 합니다.

age > 1 && age < 20
실습 문제

직접 해보기

1. 입장 가능 여부 판정하기 난이도 하

나이가 19 이상이고 회원이면 true 를 출력하세요. 두 값은 변수에 담아 두고, 값을 바꿔 가며 결과를 확인해 보세요.

"그리고" 는 && 입니다. 양쪽이 모두 참이어야 참입니다.
const age = 20; const isMember = true; console.log(age >= 19 && isMember);
2. 결과 예측하기 난이도 중

아래 네 줄의 결과를 먼저 적어 보고, 편집기에 넣어 실행해 확인하세요.

console.log("10" === 10); console.log("" == 0); console.log(!"0"); console.log(null === undefined);
false true false false
요약

이 단원의 정리

  • 비교의 결과는 truefalse 입니다.
  • === 는 값과 타입을 함께 봅니다. 언제나 이것을 사용합니다.
  • && 는 둘 다 참일 때, || 는 하나만 참이어도 참입니다.
  • 거짓으로 다뤄지는 값은 false · 0 · "" · null · undefined · NaN 여섯 가지입니다.
  • 범위는 1 < age < 20 이 아니라 age > 1 && age < 20 으로 적습니다.