모든 값이 true
면true
즉, 하나라도 flase
면 false
를 반환
여러개 중 하나라도 true
면 true
즉, 모든 값이 false
일 때만 false
를 반환
true
면 false
false
면 true
" 스티븐 잡스는 한국인 이고 (and) 남자이다. "
한국인이면서 남자여야 하기 때문에 두 조건이 모두 맞아야 true
, 잡스는 한국인이 아니기 때문에 위의 예제에서는 false
를 반환한다.
" 스티븐 잡스는 한국인 이거나 (or) 남자이다. "
한국인, 남자 중 한 개라도 맞으면 `true` 이기 때문에 위의 예제는 `true` 이다.
true
를 발견하는 즉시 평가를 멈춤false
를 발견하는 즉시 평가를 멈춤&& (AND)
" 스티븐 잡스는 남자 이고 (and) 한국인 이며, 군인인 동시에... "
위 예제에서는 한국인이라는 것에서 false
이 나오기 때문에 그 뒤의 조건은 보지 않아도 결과값은 false
이다.
|| (OR)
" 스티븐 잡스는 남자 이거나 (or) 한국인 이거나, 군인 이거나... "
여기에서 잡스는 남자가 맞기 때문에 (1개 조건이 true
) 굳이 뒤의 조건을 보지 않아도 true
라고 할 수 있다.
평가하는 방법
운전면허가 있고 시력이 좋은 여군
- 운전면허 소지자 : 전체 군인의 80%
- 시력이 좋은 사람 : 전체 군인의 60%
- 여군 : 전체 군인의 7%
이 경우 조건은 아래와 같이 주는 것이 좋다.
여군인데 시력이 좋고 운전면허가 있는 사람
첫번째 조건에서 93% 를 걸러낼 수 있기 때문에 시간을 줄일 수 있고 이는 성능 최적화에 도움을 준다.
const name = prompt('이름을 입력해주세요.');
const age = prompt('나이를 입력해 주세요.');
if (name === 'mike' && age > 19) {
alert ('통과하셨습니다.');
} else {
alert ('다시 시도해 주세요.');
}
name 이 mike 이면서 (and) age 가 19보다 크면 (조건이 모두 맞으면 true
이며 한 개라도 맞지 않을 경우 false
를 반환한다.
2. 사용자가 이름과 나이를 입력할 수 있도록 하고, 이름이 tom 이거나, 성인이면 '통과하셨습니다'를 화면에 출력하세요. (OR)
const name = prompt('이름을 입력해주세요.');
const age = prompt('나이를 입력해 주세요.');
if (name === 'tom' || age > 19) {
alert ('통과하셨습니다.');
} else {
alert ('다시 시도해 주세요.');
}
name 이 tom 이거나(or) age 가 19보다 크면 (조건이 1개라도 맞으면 true
이기 때문에 '통과하셨습니다' 메시지가 보여진다.
3. 사용자의 나이를 입력 받아 성인이 아니면 돌아가라고 메시지가 보여지도록 하세요. (NOT)
const age = prompt('나이를 입력해 주세요');
const isAdult = age > 19;
if(!isAdult) {
console.log('돌아가세요.');
} else {
console.log('환영합니다.')
}
isAdult 값을 age > 19 로 주고 if 문에서 !(NOT) 연산자를 사용하여 사용자가 입력한 값이 19 이하일 경우 '돌아가세요.' 라는 메시지가 출력된다.
비교 연산자에도 우선 순위가 있다.
AND > OR
남자이고, 이름이 mike 이거나 성인 이면 통과
❌ 오답
const gender = 'f';
const name = 'uoah';
const age = 24;
if (gender === 'm' && name === 'mike' || age > 19) {
console.log('통과하셨습니다.');
} else {
console.log('다시 시도해 주세요.')
}
// '통과하셨습니다.'
❓ gender 와 name 이 모두 일치하지 않았는데 왜 '통과하였습니다.' 가 출력되었을까?
⭕️ 풀이
and 가 or 보다 우선 순위가 높아서 먼저 평가되고 그 뒤에 or (위 예제에서 age) 를 평가할 때 true 가 나왔기 때문에 '통과하셨습니다' 가 출력된다.
위의 if 문 조건 코드는 아래 코드와 같다.
if ((gender === 'm' && name === mike) || age > 19)
의도한 바와 같이 나오게 하려면 어떻게 입력해야 하는지 알아 보자.
const gender = 'f';
const name = 'uoah';
const age = 24;
if (gender === 'm' && (name === 'mike' || age > 19)) {
console.log('통과하셨습니다.');
} else {
console.log('다시 시도해 주세요.')
}
// '다시 시도해 주세요.'
❓ gender 를 'm' 으로 바꾼다면 어떻게 동작할까?
const gender = 'm';
const name = 'uoah';
const age = 24;
if (gender === 'm' && (name === 'mike' || age > 19)) {
console.log('통과하셨습니다.');
} else {
console.log('다시 시도해 주세요.')
}
// '통과하셨습니다.'
우선 순위를 or 에 먼저 두는 코드를 작성하여 name 과 age 중 1개가 맞고, gender 가 조건에 맞으면 true
를 출력한다.