09. 비교연산자, 10.논리 연산자

소재현·2022년 7월 20일
0

09. 비교연산자

  • 09-1. 비교 연산자
    비교 연산자는 연산자 양쪽에 있는 두 값, 즉 좌항과 우항을 비교하는 연산자 입니다.
    비교 연산자의 종류에는 동치 연산자(==, ===, !=, !==)와 관계 연산자(>, <, >=, <=)가 있습니다.
    관계 연산자는 문자열(사전순으로 비교)과 숫자(크기로 비교) 데이터 타입을 비교할 때 사용됩니다.
    동치 연산자는 다양한 데이터타입을 비교하는 경우 사용됩니다.

  • 09-2. 일치 연산자(===)
    조건문 등에서 자주 사용 되는 동치 연산자에 대해 살펴봅시다. if 문 예제에서 사용했던 === 연산자 기억하시나요? === 연산자는 연산자 양쪽에 있는 두 값을 비교하는 비교연산자 중 하나 입니다.
    === 연산자는 값과 타입이 같은지를 비교하는 동등 비교 연산자(equality operator) 입니다.
    (cf. === 엄격(일치) 비교 vs. == 추상(동등) 비교)

  • 09-3. 불일치 연산자(!==)
    이렇게 같은지를 비교하는 것이 아니라 !== 를 사용해서 서로 '같지 않음'을 비교할 수도 있습니다.

  • 09-4. 동등 연산자(==)
    ==는 동등 비교연산자(equality operator)입니다. '첫 번째 내용에 나왔는데 중복인가?' 하시겠지만, 차이점이 있습니다. 첫 번째는 =가 3개인 === 였고, 지금은 == 2개 입니다. ===는 엄격한(identity/strict) 비교연산자 이고, ==는 느슨한 비교연산자 입니다.

10.논리 연산자

  • 10-2. 논리 연산자의 사용법
    바로 "또는(or)" 이라는 논리 연산자를 사용하는 것입니다. "또는(or)"에 해당하는 JavaScript 연산자는 || 입니다. (shift + \)
    "그리고(and)" 연산자인 &&

Assignment
index.js에 있는 가위 바위 보 게임 함수를 아래 조건에 맞게 구현해주세요.
rockPaperScissors 함수를 구현해서 가위 바위 보 게임을 구현해주세요.
가능하면 || 와 && 연산자 둘다 사용해주세요.
player1과 player2 중 이긴 사람이 누군지 리턴해주세요.
예를 들어, player1이 이겼으면 "player1" 이 리턴 되고 그 반대의 경우라면 "player2"가 리턴이 되어야 합니다.
만일 비기는 경우에는 무조건 "player1"이 리턴 되어야 합니다.
player1 과 player2 의 값은 다음 셋 중 하나 입니다.
"가위"
"바위"
"보"
예를 들어, player1은 "가위" 이고 player2는 "보" 이면 "player1" 이 리턴 되어야 합니다.

첫번째 작성한코드
처음 작성한 코드는 내가 생각했을 땐 맞는 코드라고 생각했지만 계속해서 답이 플레이어 1으로 나와서 계속 멘붕이었다 그래서 멘토님께 상황을 설명드렸더니 일단은 어디에서 잘못 받아들이고 있는지 찾는 게 좋다고 하셨다 그래서 하나씩 console.log를 입력해서 지금 어디 부분에서 적용이 되는지 찾아보았는데 두 번째 if 문에서 적용이 되는 것을 발견했다 그래서 왜 플레이어 1이 가위이고 플레이어 2에 바위 값을 적용하였는데 왜 두 번째 if 문에서 적용이 되는지 확인해 본 결과 내가 처음 작성한 코드는 가로로 플레이어 2를 따로 닫아주지 않아서 왼쪽부터 계산이 되어서였다ᅮᅮ 가로로 닫아줘야 이어서 계산하지 않고 따로 계산이 되기 때문에 결과가 제대로 나올 수 있었다 나름 오래 붙잡고 있다가 해결하니 속이 시원하기도 하고 좀 뿌듯,,

function rockPaperScissors(player1, player2) {
//  예시:
 
  if ( player1 === "가위" && player2 === "보" || player2 == "가위" ) {
   // console.log("player1",player1,"player2",player2)
   const result = "player1" ;
    return result  ;
  }else if ( player1 === "바위" && player2 === "가위"|| player2 == "바위"){
  //  console.log("player1",player1,"player2",player2)
  const result = "player1";
    return result  ;
  } else if ( player1 === "보" && player2 === "바위" || player2 =="보" ){
   //  console.log("player1",player1,"player2",player2)
  const result = "player1";
    return result  ;
  }else {
   //  console.log("player1",player1,"player2",player2)
  const result = "player2";
   return result  ;
  }
}

console.log(rockPaperScissors("가위","바위"));


수정 한 코드

function rockPaperScissors(player1, player2) {
//  예시:
 
  if ( player1 === "가위" && (player2 === "보" || player2 == "가위") ) {
   // console.log("player1",player1,"player2",player2)
   const result = "player1" ;
    return result  ;
  }else if ( player1 === "바위" && (player2 === "가위"|| player2 == "바위")){
  //  console.log("player1",player1,"player2",player2)
  const result = "player1";
    return result  ;
  } else if ( player1 === "보" &&(player2 === "바위" || player2 =="보") ){
   //  console.log("player1",player1,"player2",player2)
  const result = "player1";
    return result  ;
  }else {
   //  console.log("player1",player1,"player2",player2)
  const result = "player2";
   return result  ;
  }
}

console.log(rockPaperScissors("가위","바위"));
console.log(rockPaperScissors("보","바위"));
console.log(rockPaperScissors("가위","바위"));

0개의 댓글