JS 기초 | 논리 연산자 (AND / OR / NOT )

uoah·2023년 1월 7일
0

자바스크립트

목록 보기
8/33
post-thumbnail

🚀 오늘의 학습 목표

  • 논리 연산자 이해
  • AND
  • OR
  • NOT

8. 논리 연산자 (AND / OR / NOT)

8-1. && (AND)

모든 값이 truetrue
즉, 하나라도 flasefalse 를 반환

8-2. || (OR)

여러개 중 하나라도 truetrue
즉, 모든 값이 false 일 때만 false 를 반환

8-3. ! (NOT)

truefalse
falsetrue


🔍 예제를 통해 쉽게 이해 하기

  1. && (AND)

" 스티븐 잡스는 한국인 이고 (and) 남자이다. "

한국인이면서 남자여야 하기 때문에 두 조건이 모두 맞아야 true, 잡스는 한국인이 아니기 때문에 위의 예제에서는 false 를 반환한다.

  1. || (OR)

" 스티븐 잡스는 한국인 이거나 (or) 남자이다. "

한국인, 남자 중 한 개라도 맞으면 `true` 이기 때문에 위의 예제는 `true` 이다.

8-4. 평가

  • OR 는 첫번째 true 를 발견하는 즉시 평가를 멈춤
  • AND 는 첫번째 false 를 발견하는 즉시 평가를 멈춤

🔍 예제를 통해 쉽게 이해 하기

  1. && (AND)

    " 스티븐 잡스는 남자 이고 (and) 한국인 이며, 군인인 동시에... "

    위 예제에서는 한국인이라는 것에서 false 이 나오기 때문에 그 뒤의 조건은 보지 않아도 결과값은 false 이다.

  2. || (OR)

    " 스티븐 잡스는 남자 이거나 (or) 한국인 이거나, 군인 이거나... "

    여기에서 잡스는 남자가 맞기 때문에 (1개 조건이 true) 굳이 뒤의 조건을 보지 않아도 true 라고 할 수 있다.

  3. 평가하는 방법

    운전면허가 있고 시력이 좋은 여군

    • 운전면허 소지자 : 전체 군인의 80%
    • 시력이 좋은 사람 : 전체 군인의 60%
    • 여군 : 전체 군인의 7%

    이 경우 조건은 아래와 같이 주는 것이 좋다.

    여군인데 시력이 좋고 운전면허가 있는 사람

    첫번째 조건에서 93% 를 걸러낼 수 있기 때문에 시간을 줄일 수 있고 이는 성능 최적화에 도움을 준다.


📝 직접 만들어 보기

  1. 사용자가 이름과 나이를 입력할 수 있도록 하고, 이름이 mike 이거나, 성인이면 '통과하셨습니다'를 화면에 출력하세요. (AND)
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 이하일 경우 '돌아가세요.' 라는 메시지가 출력된다.


8-5. 우선 순위

비교 연산자에도 우선 순위가 있다.

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 를 출력한다.

0개의 댓글

관련 채용 정보