JS 자바스크립트 기초 - 08. 논리 연산자 (AND, OR, NOT), 우선순위

2025. 3. 6. 12:15Programming/JS

 

 

 

 


 

 

 

 

 

논리 연산자

||             OR

&&          AND

!              NOT

 

 

 

 

|| (OR) 연산자

여러 개 중 하나라도 truetrue

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

 

 

 

Code

// OR
// 이름이 Tom 이거나, 성인이면 통과

const name = "Mike";
const age = 30;

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

 

 

 

result

"통과"

 

→ 이름은 'Tom'이 아니지만, OR 연산자이기 때문에

성인이 true로 if문의 조건식을 만족하게 되어 '통과'라는 문장이 출력이 된다.

 

 

 

 

 

 

 

&&  (AND) 연산자

모든 값truetrue

즉, 하나라도 falsefalse를 반환한다.

 

 

 

Code

// AND
// 이름이 Mike 이고, 성인이면 통과

const name = "Mike";
const age = 30;

if(name === 'Mike' && age > 19) {
  console.log('통과');
} else {
  console.log('입장이 불가합니다.');
}

 

 

 

result

"통과"

 

 

 

 

만약, 나이가 성인이 아니라면?

 

 

 

Code

// AND
// 이름이 Tom 이거나, 성인이면 통과

const name = "Mike";
const age = 18;

if(name === 'Mike' && age > 19) {
  console.log('통과');
} else {
  console.log('입장이 불가합니다.');
}

 

 

result

"입장이 불가합니다."

 

→ AND 연산자는 모든 조건식을 만족해야 (false를 보자마자 그냥 false임) 함.

 

 

 

 

 

 

!  (NOT) 연산자

true false

false true

 

 

 

 

Code

// NOT
// 나이를 입력받아 성인 아니면 돌아가라고..

const age = prompt('나이를 입력해주세요.');
const isAdult = age > 19;

if(!isAdult) {
  console.log('돌아가..');
}
console.log('들어와..');

 

 

 

 

만약 prompt에 20을 입력한다면,

결과는 아래와 같다.

 

 

 

result

"들어와.."

 

 

 


그렇다면, 경계값인 '19'를 입력하게 되면 어떻게 될까?

 

"돌아가.."

 

 

비교 연산자가 >= '크거나 같다.'가 아닌 > '크거나' 일 때이기 때문에

경계값보다 큰 상태일 때,

즉, 피연산자보다 초과됐을 때만 조건식을 만족하게 된다.

 

>=    :    피연산자보다 '이상' (피연산자를 포함한 값부터)

>      :    피연산자보다 '초과' (피연산자를 제외한 값부터)

 

 

 

 

 

논리 연산자 우선순위

AND > OR

 

 

 

Code

// 논리 연산자 우선순위

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

// 남자이면서, 이름이 Mike 이거나, 성인이면 통과
// if((gender === 'M' && name === 'Mike') || isAdult)아래의 코드는 이와 같다.
if(gender === 'M' && name === 'Mike' || isAdult) {
  console.log('통과');
} else {
  console.log('돌아가주십시오.');
}

 

 

논리 연산자의 우선순위가 AND > OR 순이기 때문에

AND가 먼저 평가된 후 OR가 후에 평가되었기 때문에 아래와 같은 결과가 출력된다.

 

 

result

"통과"

 

 

 

의도한 대로 결과를 출력하고 싶다면,

아래와 같이 코딩하면 된다.

 

 

 

Code

// 우선순위

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

// 남자이면서, 이름이 Mike 이거나, 성인이면 통과
if(gender === 'M' && (name === 'Mike' || isAdult)) {
  console.log('통과');
} else {
  console.log('돌아가주십시오.');
}

 

 

 

result

"돌아가주십시오."

 

 

 

 


 

 

 

 

 

 

평가

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

 

스티브 잡스는 남자 이거나 (OR), 한국인 이거나, 군인 이거나..

→ true ( 스티브 잡스는 남자 )

 

 

 

평가

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

 

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

→ false ( 한국인 이며, 군인인 동시에.. )

 

 

 

 

평가

운전면허(전체 군인의 80%)가 있고 시력(전체 군인의 60%)이 좋은 여군(전체 군인의 7%)

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

순으로 코딩하는 게 좋음 (성능 최적화에 도움 - 첫 번째 평가에서 93%를 거를 수 있기 때문)

 

 

 

 

 

정리

||             OR       a || b        // a 와 b 둘 중 하나가 true 이면 true

&&          AND    a && b     // a 와 b 둘 다 true 이면 true

!              NOT    !a             // a가 false 이면 true

 

 

 

 

 

 

 



 

 

 

정리되어있는 내용은 코딩앙마 자바스크립트기초강좌를 듣고

정리한 내용입니다.