JavaScript - 논리연산자

HYUK·2022년 12월 27일
0

1. 논리연산자의 필요성

const answer = prompt("어디사세요?");

if (answer === "선릉") {
  alert("가까우시네요!");
} else if (answer === "강남") {
  alert("가까우시네요!");
} else if (answer === "을지로") {   
  alert("조금 멀리 사시네요."); 
} else {
 alert("거긴 어디인가요?");
}

위의 코드 내용을 보게 되면 answer가 "선릉", "강남"일 때는 조건은 다르지만, "가까우시네요!"라는 같은 결과값을 출력합니다. 이경우 결과는 같지만 불필요하게 반복이 이루어지고, 생산성이 떨어져 보입니다. 이럴때는 논리연산자중 '||'(or) 이용하면 코드를 간단하게 작성할 수 있습니다.

2. 논리연산자의 사용법

  • "또는(or)"에 해당하는 JavaScript 연산자는 || 입니다.

2-1 ||

const answer = prompt("어디사세요?");

if (answer === "선릉" || answer === "강남" || answer === "역삼") {
  alert("가까우시네요!");
} else if (answer === "을지로") {   
  alert("조금 멀리 사시네요."); 
} else {
 alert("거긴 어디인가요?");
}

하나의 if 문에 참(true)/거짓(false)을 판단할 조건은 세 개(선릉,강남,역삼)입니다. prompt 함수에서 리턴받은 answer가 선릉, 강남, 역삼 중 하나일 경우. 즉, 저 '셋 중에 하나'로 대답하면 해당 if문이 실행됩니다.

2-2 &&

  • 어떤 조건 하나만 맞으면 되는 것이 아니라 모두 충족해야할 때 사용하는 "그리고(and)" 연산자인 && 를 보겠습니다.
const hobby = prompt("취미가 무엇인가요?");
const morning = prompt("아침형 인간인가요?");

if (hobby === "축구" && morning === "네") {

// 비교연산자 두개 hobby와 morning 부분이 모두 조건이 충족이된다면 조건문 실행

  alert("조기축구회를 추천합니다.");
} else {
  alert("무슨 동아리가 좋을지 생각해볼게요.");
}

Assignment

-가위 바위 보 게임 함수를 아래 조건에 맞게 구현해주세요.

  • rockScissorsPaper 함수를 구현해서 가위, 바위, 보 게임을 구현해주세요.
  • 가능하면 || 와 && 연산자 둘 다 사용해주세요.
  • player1과 player2 중 이긴 사람이 누군지 리턴해주세요.
  • 예를 들어, player1이 이겼으면 "player1" 이 리턴 되고 그 반대의 경우라면 "player2"가 리턴이 되어야 합니다.
  • 만일 비기는 경우에는 무조건 "player1"이 리턴 되어야 합니다.
  • player1 과 player2 의 값은 다음 셋 중 하나 입니다.
    "가위", "바위", "보"
  • 예를 들어, player1의 값이 "가위" 이고 player2의 값이 "보" 이면 "player1" 이 결과로 리턴 되어야 합니다.
function rockScissorsPaper(player1, player2) { 
  if(player1==='바위' && (player2==='가위' || player2==='바위')){ 
    result = "player1"
   }else if(player1==='보' && (player2==='바위' || player2==='보')){  
    result = "player1" 
   }else if(player1==='가위' && (player2==='보' || player2==='가위')){
    result = "player1" 
  }else{ 
    result = "player2" 
  }
  return result
}

console.log(rockScissorsPaper('바위', '바위')) // player1
console.log(rockScissorsPaper('바위', '가위')) // player1
console.log(rockScissorsPaper('바위', '보')) // player2
  • rockScissorsPaper함수에 player1, player2 인자 지정
  • 첫번째 if문에서 player1이 '바위'이고 player2가 '가위' 또는 '바위'인 경우에는 player1 출력
  • 아래 else if절에서 player1이 '보'이고 player2가 '바위' 또는 '보'인 경우에는 player1 출력
  • 2번째 else if절에서 player1이 '가위'이고 player2가 '보' 또는 '가위'인 경우에는 player1 출력
  • else절에서는 player2 출력

조건문에서 || 논리연산자 부분에서 괄호로 묶어준 이유는 괄호로 묶어주지 컴퓨터 언어는 작성된 순서대로 코드를 해석합니다 그렇기 때문에 이경우, 뒤에 내용을 먼저 비교를 해야되기 때문에 괄호로 묶어서 작성합니다.

profile
step by step

0개의 댓글