논리 연산자 (AND, OR, NOT)

라용·2022년 7월 19일
0

유튜브 코딩앙마 채널의 '자바스크립트 기초 강좌' 를 공부하며 정리한 내용입니다.

세 종류의 논리 연산자가 있습니다.

  1. || or연산자 여러개 중 하나라도 truetrue 모든 값이 false 여야 false
  2. && and연산자 모든 값이 truetrue 하나라도 falsefalse
  3. ! not연산자 truefalse 의 값을 바꿔줌

or 은 첫번째 true 를 발견하면 즉시 평가를 멈춥니다.
and 는 첫번째 false 를 발견하면 즉시 평가를 멈춥니다.
실제 코드에서는 어떤 순서로 평가를 배치하는 지가 중요합니다.

예를들어 운전면허가 있고 시력이 좋은 여군을 골라야 할 때,
운전면허, 전체 군인의 80%
시력, 전체 군인의 60%
여군, 전체 군인의 7%
라면 첫 평가에서 93%를 걸러주는 여군 조건을 먼저 검사해야 합니다. 이렇게 하면 데이터를 평가하느라 걸리는 시간을 줄이고, 성능 최적화에 도움을 줍니다.

아래와 같이 사용할 수 있습니다.
a||b - a나 b중 true가 있다면 true
a&&b - a와 b 둘다 true면 true
!a - a가 false면 true

//이름이 tom이거나 성인이면 통과하는 프로그램을 만든다고 하면,
const name = "Mike";
const age = 30;

if(name==='tom' || age>19){
	console.log('통과');
}

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

if (name==='Mike" && age>19){
	console.log('통과');
}

//나이를 입력받아 성인이 아니면 돌아가라고 한다면
const age = prompt('나이가 어떻게 되세요?');
const isAdult = age>19;

if(!isAdult){ // ! 써서, 성인이 아니면 ture 실행
	console.log('돌아가세요');
}

비교연산자에도 우선순위가 있습니다.
아래 예제를 보면,

// 남자이고, 이름이 Mike 이거나 성인이면 통과

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

if(gender==='M' && name==='Mike' || isAdult){
	console.log('통과');
} else {
	console.log('돌아가');
}
// 위 코드는 or 로 계산되어 '통과' 된다. 
// 비교연산자 우선순위에 의해 앞의 and연산자가 먼저 묶이고, 뒤에 or연산자로 판단한다.
// (gender==='M' && name==='Mike') || isAdult - 이렇게 묶인 상태
// or연산자로 인해 성인만으로 통과됨
// 원래 의도처럼 작동하게 하려면, 아래처럼 괄호로 묶어주어야 함

if(gender==='M' && (name='Mike' || isAdult))
profile
Today I Learned

0개의 댓글