본문 바로가기

Language/JavaScript

[JavaScript] 연산자 종류와 if 조건문

if 조건문에 비교 연산자를 사용할 수 있다.

 

연산자 종류

종류 기호 문법 의미
비교 연산자 == A==B A와 B가 같은가?
!= A!=B A와 B가 다른가?
=== A===B A와 B가 일치하는가? (type까지 고려)
!== A!==B A와 B가 일치하지 않는가?
>, < A>3, A<3 A가 3보다 큰(작은)가?
>=, <= A>=3, A<=3 A가 3보다 크거나(작거나) 같은가?
논리 연산자
&& (AND) A&&B A와 B가 모두 참이면 true
|| (OR) A||B A와 B 중 하나가 참이면 true
! (NOT) !A A가 true면 결과는 false

 

==와 ===의 차이

const stringFive = '5';
const numberFive = 5;

//type을 변경해서 검사
console.log(stringFive == numberFive)   //true
console.log(stringFive != numberFive)   //false

//type이 다른지 검사
console.log(stringFive === numberFive)   //false
console.log(stringFive !== numberFive)   //true

== 비교연산자는 안의 5는 같기 때문에 true로, === 비교연산자는 type까지 신경쓰기 때문에 false가 출력된다.

 

const data1 = {name: 'data'};
const data2 = {name: 'data'};
const data3 = data1;

console.log(data1 == data2)   //false
console.log(data1 === data2)  //false
console.log(data1 === data3)  //true

date1과 date2에는 각각 다른 reference가 들어있기 때문에 false가 출력된다.

 

 

 

ex1. who

누구냐에 따라 다른 메시지를 반환한다.

function isOkayToDrive(who) {
  if (who === "son") {
    return "Nope!"
  }

  if (who === "mom") {
    return "Good!"
  }

  if (who === "dad") {
    return "Be careful!"
  }

  return "Who are you?"
}

console.log(isOkayToDrive("uncle"))     //Who are you?

 

 

 

ex2. name, age

20살보다 적은 경우와 21살이거나 많은 경우, 각각 다른 메시지를 반환한다.

function checkAge(name, age) {
  if (age < 20) {
  return "Go home, " + name + "!"
  }
  if (age >= 21) {
  return "Nice to meet you, " + name + "!"
  }
}

const output1 = checkAge('Min', 21);
const output2 = checkAge('Seok', 17);

console.log(output1);    //Nice to meet you, Min!

 

 

 

ex3. string

문자열이 동일하면 true, 동일하지 않으면(else) false를 반환한다.

function equalsHappyCoding(string) {
  if (string === "MerryChristmas") {
  return "true"
  }
  else {
  return "false"
  }
}

const output1 = equalsHappyCoding("Olaf")
const output2 = equalsHappyCoding("MerryChristmas")

console.log(output2);     //true

 

 

 

ex4. even? odd?

number의 홀수와 짝수를 판별한다.

function isEven(num) {
  if (num % 2 == 0) {
    return "even"
  }
  else {
    return "odd"
  }
}

const output = isEven(5000);

console.log(output);     //even

 

 

 

 

ex5. 논리연산자(&&)

홀수+20이상의 숫자라는 두 가지 조건을 판별한다.

function isOddAndGreaterThanTwenty(num) {
  if (num % 2 !== 0 && num > 20) {
    return "true"
  }
  else {
    return "false"  
  }
}

const output1 = isOddAndGreaterThanTwenty(19);
const output2 = isOddAndGreaterThanTwenty(21);

console.log(output1);     //false
console.log(output2);     //true

 

 

 

ex.6 else if 조건문 순차 실행

function myFavoriteColor(color) {
  
 if (color = "navy") {
   alert("Good!")
 } else if(color = "yellow") {
   alert("Not good!")
 } else {
   alert("Whatever!")
 }
}

console.log (myFavoriteColor("navy"))     //Good!

 

 

 

ex.7 grade

점수에 따른 등급을 반환한다.

function whichGrade(score) {
  if ( 90 <= score && score <= 100 ) {
    return "A"
  }
  if ( 80 <= score && score <= 89 ) {
    return "B"
  }
  if ( 70 <= score && score <= 79 ) {
    return "C"
  }
  if ( 60 <= score && score <= 69 ) {
    return "D"
  }
  if ( 0 <= score && score <= 59 ) {
    return "F"
  }
    return "INVALID SCORE"
}

const output = whichGrade(91)

console.log(output)     //A

 

 

 

ex.8 가위바위보

function rockScissorsPaper(player1, player2) {

  if ( player1 === "rock" && (player2 === "scissors" || player2 == "rock") ) {
    alert = "player1 won!" 
  } else if (player1 === "scissors" && (player2 === "paper" || player2 == "scissors")) {
    alert = "player1 won!"
  } else if (player1 === "paper" && (player2 === "rock" || player2 == "paper")) {
    alert = "player1 won!"
  } else {
    alert = "player2 won!"
  }
  
  return alert;
}

console.log(rockScissorsPaper("rock", "paper"))

 

 

 

ex.9 여러 인자 사용

function formatDate(year, month, date) {
  if (date) {
    return year + '/' + month + '/' + date
  }; if (month) {
    return year + '년' + month + '월'
  }; if (year) {
    return year + '년'
  };
}

console.log (formatDate(2023, 2, 23))     //2023/2/23
console.log (formatDate(2023, 2))         //2023년 2월
console.log (formatDate(2023))            //2023년

 

 

 

ex.10 address에 '○○시'가 있는 경우 제외하고 반환

function sliceCityFromAddress(address) {
  let blahDo = address.indexOf("도");
  let blahCity = address.indexOf("시");

if (blahCity !== -1) {
  return address.slice(0, blahDo+1) + "" + address.slice(blahCity+1, address.length);
  } else {
  return address;
 }
}

console.log (sliceCityFromAddress("경기도 성남시 분당구 대왕판교로 123"))     //경기도 분당구 대왕판교로 123