비교와 논리 연산자
=== 와 == 의 차이, 그리고 조건을 조합하는 방법입니다.
참인지 거짓인지 묻습니다
두 값을 비교하면 true 나
false 가 나옵니다. 다음 단원의 조건문이 이 결과를 보고
실행할 코드를 정합니다.
><>=<=— 크기를 비교합니다.===— 값과 타입이 모두 같은지 봅니다.!==— 값이나 타입이 다른지 봅니다.
=== 와 == 의 차이
=== 는 타입까지 같아야 참입니다.
== 는 타입이 다르면 한쪽을 바꿔 맞춘 뒤 비교합니다.
console.log(1 === 1); console.log(1 === "1"); console.log(1 == "1"); console.log(0 == false);
셋째 줄과 넷째 줄이 문제입니다. 숫자와 글자가, 숫자와 참·거짓이 같다고 나옵니다.
이렇게 몰래 바뀌는 것이 버그가 되므로 언제나
=== 를 사용합니다.
크기 비교
const age = 19; console.log(age > 19); console.log(age >= 19); console.log(age < 19); console.log(age !== 20);
>= 는 "크거나 같다" 입니다. 등호가 뒤에 붙습니다.
조건을 여러 개 묶기
&& 는 양쪽이 모두 참일 때 참이고,
|| 는 한쪽만 참이어도 참입니다.
! 는 참과 거짓을 뒤집습니다.
const age = 20; const isMember = true; console.log(age >= 19 && isMember); console.log(age < 19 || isMember); console.log(!isMember);
&& 는 왼쪽이 거짓이면 오른쪽을 보지 않습니다.
|| 는 왼쪽이 참이면 오른쪽을 보지 않습니다.
참으로 여겨지는 값
참·거짓이 아닌 값도 조건 자리에 놓이면 참이나 거짓으로 다뤄집니다. 거짓으로 다뤄지는 것은 여섯 가지뿐이고, 나머지는 모두 참입니다.
console.log(Boolean(0)); console.log(Boolean("")); console.log(Boolean(null)); console.log(Boolean(undefined)); console.log(Boolean(1)); console.log(Boolean("0"));
거짓으로 다뤄지는 여섯 가지는 false ·
0 · "" ·
null · undefined ·
NaN 입니다. 마지막 줄을 보세요. 빈 글자는 거짓이지만
"0" 은 글자가 들어 있어 참입니다.
처음에 자주 걸리는 것
= 하나는 값을 넣는 것이고,
=== 는 비교하는 것입니다. 조건 자리에
= 를 적으면 비교가 아니라 값이 들어갑니다.
if (age = 19) // 비교가 아니라 19를 넣습니다
0 == "" 이 참입니다. 타입이 다른데도 같다고
나오는 경우가 많아 찾기 어려운 버그가 됩니다. 언제나
=== 를 사용하세요.
1 < age < 20 은 뜻대로 동작하지 않습니다.
왼쪽부터 차례로 계산되어 엉뚱한 결과가 나옵니다.
&& 로 나눠 적어야 합니다.
age > 1 && age < 20
직접 해보기
나이가 19 이상이고 회원이면 true 를 출력하세요.
두 값은 변수에 담아 두고, 값을 바꿔 가며 결과를 확인해 보세요.
&& 입니다. 양쪽이 모두 참이어야 참입니다.아래 네 줄의 결과를 먼저 적어 보고, 편집기에 넣어 실행해 확인하세요.
이 단원의 정리
- 비교의 결과는
true나false입니다. ===는 값과 타입을 함께 봅니다. 언제나 이것을 사용합니다.&&는 둘 다 참일 때,||는 하나만 참이어도 참입니다.- 거짓으로 다뤄지는 값은
false·0·""·null·undefined·NaN여섯 가지입니다. - 범위는
1 < age < 20이 아니라age > 1 && age < 20으로 적습니다.