자바스크립트 js 조건문 정리

ggoggori_._·2021년 3월 24일
0

javascript

목록 보기
2/4

오늘은 자바스크립트 조건문에 대해서 정리해보려고 한다.


조건문 이해하기

조건문이란 설정된 조건에서 분기하여 각기 다른 task를 진행하기 위해서 사용된다.

예를 들어 간식을 사고 싶은데 지갑에 얼마가 있는지 모르고, 아직 지갑 안을 살펴보기 전이라고 해보자.
마음속으로는 이렇게 생각 중이다.
5000원 넘으면 하겐다즈 사야지,,, 5000원 보다 적으면 쌍쌍바 사야지,,,
여기서 조건문이 활용된다.

조건 = 지갑속 돈이 5000원 이상인가?
if yes >> 하겐다즈 구입
else if no >> 쌍쌍바 구입

조건문은 어렵지 않다.
이제 코드로 이해해보자!

if

if (<조건>){
실행문
}

<조건> 이 true 라면 실행문을 실행한다.


let money = 8000;

if (money > 5000){
    console.log('하겐다즈 구입')
}

>>>	하겐다즈 구입

money가 8000이고 조건문에서 조건은 money > 5000이다.
true이기 때문에 실행문을 출력한다.
하겐다즈 구입 완료!


if else

좀 더 복잡한 조건문이 필요할 때가 있다.
위에서는 하겐다즈만 구입할 수 있고, 5000원보다 적을 때에는 정의가 되어있지 않다.
else를 사용하면 해당 task를 정의할 수 있다.

let money = 3000;

if (money > 5000){
    console.log('하겐다즈 구입')
} else {
    console.log('쌍쌍바 구입')
}

>>> 쌍쌍바 구입

money가 3000원 이기 때문에 money > 5000 조건문을 넘어간다.
else는 위에 있는 모든 조건문에 해당하지 않으면 실행된다.
현재 money > 5000 밖에 존재하지 않기 때문에 else 구문이 실행되었다.

갑자기 변덕이 생겨서 더 다른 물건도 구입하고 싶어졌다. 3000원이상 5000원 이하라면 하리보 젤리를 구입할 것이다.


let money = 3500;

if (money > 5000){
    console.log('하겐다즈 구입')

} else if((3000<=money)&&(money<=5000)) {
    console.log('하리보 구입')
} else{
    console.log('쌍쌍바 구입')
}

>>>	하리보 구입
  

(3000<=money)&&(money<=5000) 이 조건문이 3000원이상 5000원 이하를 나타낸다.
현재 money가 3500원이기 때문에 하리보를 구입한다! ^.^


중첩조건문

위에서 살펴본 하리보 구입 조건문을 중첩조건문으로 나타낼 수도 있다.

let money = 7500;

if (money > 3000){ // money가 7500원 이기 때문에 맨아래 else 조건문이 아닌 바로 아래의 조건문으로 분기한다.
  
    if(money<=5000) {//money가 7500원 이기 때문에 5000원보다 작아야지만 실행되는 하리보 구입은 실패이다. 
      
        console.log('하리보 구입')
      
    } else {// 위의 if 구문이 false이기 때문에 해당 else문이 실행된다. 하겐다즈 구입 성공! 
      console.log('하겐다즈 구입')
    }
  
} else{
    console.log('쌍쌍바 구입')
}

switch

switch는 특별한 형태의 조건문이다.
코드로 보는 것이 이해가 편할 것 같다.

하리보를 구매하러 계산대 앞에 선 나는 갑자기 지갑속에 남은 돈이 짝수이면 지폐로 내고, 홀수이면 다 동전으로 내고 싶어졌다,,,,(왜이럴까,,) switch문으로 구현해보자!


let money = 7351;

switch (money % 2){
    case 0:
        console.log("지폐로 낼거야!");
        break;
    case 1:
        console.log("동전으로 낼거야!");
        break;
}

>>> 	동전으로 낼거야!

위처럼 switch 문의 조건문에 해당하는 case의 실행문을 실행하는 것이 switch 조건문이다.

조건문 money % 2 가 1이기 때문에 case 0 은 지나치고, case 1에서 조건에 부합하여 해당 실행문을 실행한다.

마침 7351원이 존재해서 동전으로 냈다!


  • break

근데 왜 굳이 중간에 break문이 필요한걸까?!


let money = 7350;

switch (money % 2){
    case 0:
        console.log("지폐로 낼거야!");
    case 1:
        console.log("동전으로 낼거야!");
}
>>> 	지폐로 낼거야!
	동전으로 낼거야!

위처럼 break를 적절하게 활용하지 않으면 case 0에 해당하는 조건문에서 분기하고도 case 1의 실행문도 실행하는 것을 확인할 수 있다.

switch문은 break를 만나지 않으면 적합한 조건문에서 분기하고도 그 아래 조건문을 향해 계속 달려간다. 동전으로 내고, 동전을 부셔서 내고, atm기 에서 돈을 뽑아오고 등등 뒤에 미처 적지 못한 조건문을 모두 실행할지도 모른다.

  • break 적절하게 활용하기

그렇지만, break를 적절하게 사용한다면 swtich문을 십분 활용할 수 있다.

let month = 10

switch (month){
    case 12:
    case 1:    
    case 2:
        console.log("겨울")
    	break
    case 3:
    case 4:
    case 5:
        console.log('봄')
    	break
    case 6:
    case 7:
    case 8:
        console.log('여름')
    	break
    case 9:
    case 10:
    case 11:
        console.log('가을')
    	break
}

>>>	가을

일부 case에 실행문과 break를 작성하지 않고, 멋진 코드를 작성할 수 있다.

삼항연산자

if else 조건문을 짧게 사용할 수 있는 연산자이다.

파이썬의 lambda 함수와 일부 비슷한 것 같다.

<조건문> ? <참> : <거짓>

let money = 8000

money > 5000 ? console.log("하겐다즈 구입") : console.log("쌍쌍바 구입")


>>>	하겐다즈 구입

짧은 초기화 조건문

변수 초기화 할 때 편하게 사용할 수 있는 ||을 사용한 조건문이다.
A||B 에서 A가 참이라면 A로 대치
A||B 에서 A가 거짓이라면 B로 대치하는 형태이다.

let money;

money = money||5000;

console.log(money);

money = money||10000000000; // money가 undefinded가 아니기 때문에 그대로 money에 있는 값인 5000이 money가 된다!

console.log(money);

>>>	5000
	5000

0개의 댓글