본문 바로가기
IT/HTML & CSS & JavaScript

자바스크립트 AND, OR, NOT 논리연산자 정리, 우선순위

by 베베야 2021. 9. 6.
728x90

1. 논리 연산자 종류 및 설명

OR (||) : 여러 개 중 한 개라도 true면 true를 반환합니다. 즉 모든 값이 false일 경우에만 false를 반환합니다.
AND(&&) : 모든 값이 true면 treu를 반환합니다. 즉 하나라도 false면 false를 반환합니다.
NOT(!) : true와 false를 반대 값으로 바꿔줍니다. 즉 true 면 false, false면 true를 반환합니다.

OR
아이유는 여자 OR 개발자이다. -> true
-> OR 이기 때문에 두 가지 조건중 한 가지만 true여도 true를 반환합니다.

아이유는 여자 OR 개발자 OR 영국인 OR 군인이다. -> true
->OR 조건은 첫번째 true를 발견하면 뒤에 조건은 무시하고 true를 반환합니다.

AND
아이유는 개발자 AND 여자이다. -> false
-> AND 이기 떄문에 두 가지 조건 모두 만족해야지 true를 반환합니다.

아이유는 개발자 AND 여자 AND 가수 AND 한국인이다. -> false
-> AND 조건은 첫번째 false를 발견하면 뒤에 조건은 무시하고 false를 반환합니다.

위의 조건으로 보자면 논리 연산자를 사용할 경우 순서가 프로그램 성능에 영향을 미칩니다.
-> 키가 2미터 이상인 남자를 뽑는 경우 "남자"(50%) 보다 "2M이상"(5%)이 범위가 작아서 조건식에 먼저 위치시켜 95%를 첫 번째 평가에서 걸러낼 수 있기 때문에 성능이 향상됩니다.

 

 

2. 논리 연산자 예문

이름이 KIM 이거나, 성인이면 통과

(조건을 만족하여 통과)

const name = "kim";
const age = 30;

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



이름이 KIM이고, 성인이면 통과

(조건을 불만족하여 중지)

const name = "kim";
const age = 30;

if(name === 'tim' && age > 19){
    console.log("통과");
} else {
    console.log("중지");
}



나이를 입력받아 성인인지 아닌지 판단

const age = prompt("나이를 입력하세요")
const isAge = age >19;

console.log(isAge); //true 나 false를 받음    

if(!isAge){ 
    console.log("성인이 아닙니다."); //isAge false일 경우
} else {
    console.log("성인입니다."); //isAge true일 경우
}

변수 age에 10살을 입력한 경우

변수 age에 30살을 입력한 경우

 

3. 논리 비교 연산자 우선순위

남자이고, 이름이 kim 이거나 성인인 경우 통과 (우선순위는 && -> || 순서)

const gender = "F";
const name = "kiki";
const isAdult = true;

if(gender==="M" && name==="kim" || isAdult){
    console.log("통과");
} else {
    console.log("중지");
}


이름과 설별이 거짓인데 통과로 나왔습니다. 이것은 비교 연산자의 우선순위 때문인데요((우선순위는 && -> || 순서))
따라서 아래와 같이 우선순위를 괄호로 조정 주어야 정상적인 결과를 얻을 수 있습니다.

const gender = "F";
const name = "kiki";
const isAdult = true;

if(gender==="M" && (name==="kim" || isAdult)){
    console.log("통과");
} else {
    console.log("중지");

반응형
그리드형

댓글