본문 바로가기
✏️ 공부/JavaScript

[JS] 논리 연산자(AND, OR, NOT)

by minzyee 2022. 1. 31.

OR

여러 조건 중 하나라도 true면 true를 반환한다.

즉, 모든 값이 false 일 때만 false를 반환함.

 

첫 번째 ture를 발견하는 즉시 평가를 멈춘다.

 

(a || b)  →  a나 b 중 true가 있으면 true

// OR
// 이름이 Gandalf 이거나, 나이가 19 보다 크면 통과

const name = 'Gandalf';
const age = 20;

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

 

 

AND

모든 값이 true면 true를 반환한다.

즉, 하나라도 false면 false를 반환함.

 

AND가 OR 보다 우선순위가 높음.

 

(a && b)  →  a와 b 중 둘 다 true면 true

// AND
// 이름이 Gandalf 이고, 나이가 19 보다 크면 통과

const name = 'Gandalf';
const age = 20;

if(name === 'Gandalf' && age > 19){
	console.log('통과');
} else {
	console.log('애들은가라');
}

 

 

NOT

true면 false로 반환함

false면 true로 반환함

 

(!a)  →  a가 false면 true

// NOT
// 나이를 입력받아 성인이 아니면 돌아가게 하기

const age = prompt('하우올드알유?');
const isAdult = age > 19;

if(!isAdult){
	console.log('애들은 가라');
} else {
	console.log('통과');
}

 

 

 


 

 

 

연산자 우선순위

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

OR, AND, NOT 중에서는 

 

NOT > AND > OR 순이다.

 

 

아래의 코드는 AND가 OR보다 연산자 순위가 높아서 벌어지는 일이다.

 

// 남자이고(AND), 이름이 Scott이거나(OR), 성인이면 통과

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

if(gender === 'M' && name === 'Scott' || isAdult){
	console.log('환영한다');
} else {
	console.log('누구냐 넌');
}

//결과 : 환영한다

 

 

위의 코드를 사용자가 원하는 조건대로 만들려면 OR 부분의 조건을 괄호를 사용해 묶어준다.

(괄호의 우선순위가 연산자 우선순위 중 제일 높다.)

// 남자이고(AND), 이름이 Scott이거나(OR), 성인이면 통과

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

if(gender === 'M' && (name === 'Scott' || isAdult)){
	console.log('환영한다');
} else {
	console.log('누구냐 넌');
}

//결과 : 누구냐 넌

 

 

 


 

 

 

조건식을 작성하는 순서 또한 중요하다.

예를 들면 '키가 175cm 이상이고, 커피를 좋아하는 여성'이라면

'여성인데 키가 175cm 이상이고, 커피를 좋아하는 사람' 순으로 작성하는 것이 좋다.

 

조건식 작성 순서를 잘 배치해서

간단한 평가로 true와 false를 판단할 수 있다면 복잡한 작업 전에 해주는 것이 좋다.

이것은 '성능 최적화'에 도움을 준다.

 

 

 

 

 

 

코딩앙마님의 JS 기초 강좌를 참고하여 정리한 글 입니다.

반응형

'✏️ 공부 > JavaScript' 카테고리의 다른 글

[JS] 반복문 제어(break 문, continue 문)  (0) 2022.02.13
[JS] 반복문(while 문, for 문)  (2) 2022.02.12
[JS] 조건문(if, if else, else)  (5) 2022.01.31
[JS] 비교 연산자  (0) 2022.01.28
[JS] 연산자(operator)  (0) 2022.01.27