07. Javascript 기초 (논리 연산자)

JinNaBi·2021년 9월 12일
0

Javascript

목록 보기
7/14

01. || (OR)

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

  • 예시
    : 스티브 잡스는 한국인이거나 OR, 남자이다.
    : true이다. 스티브 잡스는 남자가 맞기에 참이된다.

  • 평가
    : OR는 첫번째 true를 발견하는 즉시 평가를 멈춤.
    : 스티브 잡스는 남자이거나 OR, 한국인 이거나, 군인 이거나.. 아무리 많은 정보를 뒤에 작성하여도 남자라는 정보가 true이므로 뒤에 설명은 읽어보지도 않고 참이라고 함.

  • a||b
    : //a 나 b 중 true가 있으면 true

//OR
//이름이 Tom이거나, 성인이면 통과
const name = "Mike";
const age = 30;

if (name === 'Tom' || age > 19){
  console.log('통과');
}
// 이름은 Tom이 아니지만 성인이기에 통과함.

02. && (AND)

모든값이 true면 true 즉, 하나라도 false면 false를 반환

  • 예시
    : 스티브 잡스는 한국인이고 AND, 남자이다.
    : false이다. 두 조건 중 스티브 잡스는 한국인이 아니기에 거짓이 됨.

  • 평가
    : AND는 첫번째 false를 발견하는 즉시 평가를 멈춤.
    : 스티브 잡스는 남자이고 AND, 한국인이며,군인인 동시에.. 마찬가지로 아무리 뒤에 많이 작성해도 한국인이라는 것에서 이미 거짓이다. 첫번째 거짓인 한국인까지만 평가하고 이후 평가는 무시함.

  • a && b
    : //a 와 b 둘 다 true면 true

// AND
// 이름이 Mike 이고, 성인이면 통과
const name = "Mike";
const age = 30;

if(name === 'Mike' && age > 19){
  console.log('통과');
}else {
  console.log('돌아가');
}
//해당 조건식에서 이름이 Mike고 나이가 19세 이상이므로 통과 만약 이름이나 나이 둘중 하나라도 조건이 다르면 돌아가라는 결과가 나옴.

03. ! (NOT)

true면 false, false면 true를 반환.

  • !a
    : //a가 false이면 true반환
// NOT
// 나이를 입력받아 성인이 아니면 돌아가는 프로그램...
const age = prompt('나이가..?')
const isAdult = age > 19;

if(!isAdult){
  console.log('돌아가')
}
// 19이하를 입력하면 돌아가 출력

04. 부가설명

운전면허가 있고 시력이 좋은 여군을 뽑는 프로그램을 작성해야 하는 경우 운전면허가 있는 군인이 전체 군인의 80%, 시력이 좋은 군인이 전체 군인의 60% 여군은 전체군인의 7%라고 가정했을 시

-> 여군인데 시력이 좋고 운전면허가 있는 사람으로 조건을 작성하는 것이 좋음.

: 이유 = 첫번째 조건문으로 93%를 거를 수 있음.
: 더불어 이런 작업은 성능 최적화에 도움을 줌.

  • 우선순위

비교 연산자에도 우선순위가 존재함.
AND가 OR보다 높음.

//해당 코드는 조건식에 조건이 남자도 아니고, 이름이 Mike도 아닌데 결과로 통과가 나왔다.
//이는 AND가 OR보다 우선순위가 높아 먼저 평가 되었기 때문
//gender === 'M' && name === 'Mike'가 먼저 평가됨.
//이후 윗줄에서 나온 결과와 || isAdult가 평가가되어 어른임이 맞으니 true값이 나와 ture가 되는 것

const gender = 'F';
const name = 'Jane';
const isAdult = true;


//의도 하는 것처럼 코드를 수정하려면  
//if(gender === 'M' && (name === 'Mike' || isAdult)) 해당 코드를 이렇게 수정해야함.
if(gender === 'M' && name === 'Mike' || isAdult) {
  console.log('통과')
} else {
  console.log('돌아가.')
}

이 글을 유튜브 코딩앙마 채널의 영상내용을 정리한 것입니다.
코딩앙마

profile
NewJeans의 Hype Boy요

0개의 댓글