[JS-책 편김에 끝까지] 제어문

짱쫑·2023년 2월 9일
0

javascript

목록 보기
4/10
post-thumbnail

제어문 control flow statement

쉽게 말해 코드의 흐름을 제어한다는 것이다.
그래서 제어문에는 조건문, 반복문 등이 존재한다.

조건문 conditional

조건문은 기본적으로 주어진 조건식의 평과 결과에 따라 코드 블록의 실행을 결정하는데 불리언 값으로 평가될 수 있는 표현식이다. 그니까 조건을 넣어서 고거시 참이면 어떤 걸.. 거짓이면 어떤 걸.. 이런식으로 쓴다는 말.

  • if문
// if (조건) { }
// if (조건) { } else { }
// if (조건1) { } else if (조건2) { } else { }
let fruit = 'apple';
if (fruit === 'apple') {
	console.log('🍎');
}

let fruit = 'apple';
if (fruit === 'apple') {
	console.log('🍎');
} else if (fruit === 'orange') {
    console.log('🍊');
} else {
	console.log('🥺');
}
  • switch 문
// 정해진 범위안의 값에 대해 특정한 일을 해야 하는 경우
let day = 4;
let dayName;

switch (day) {
	case 0: 
    	dayName = '월요일';
        break;
    	case 1:
        dayName = '화요일';
        break;
        case 2:
        dayName = '수요일';
        break;
        case 3:
        dayName = '목요일';
        break;
        case 4:
        dayName = '금요일';
        break;
        case 5:
        dayName = '토요일';
        break;
        case 6:
        dayName = '일요일';
        break;
        default: console.log('해당하는 요일 없음');
 }
 
 console.log(dayName); // 금요일

만약 break문이 없다면 결과에 맞든 맞지않든 마지막 case와 default가 출력된다. 이를 폴스루(fall through)라고 한다. 즉, dayName 변수에 일요일이 할당된 후 switch문을 출력하지 않고 연이어 일요일이 할당되고 마지막으로 해당하는 요일 없음이 재할당 된다.

default문에는 break문을 생략하는 것이 일반적이고 default문은 switch문의 맨 마지막에 위치하므로 default문의 실행이 종료되면 switch문을 빠져나간다.

반복문 loop ❗️❗️❗️

조건식의 평과 결과가 참인 경우 코드 블록을 실행한다. 그 후 조건식을 다시 평가하여 여전히 참인 경우 코드 블록을 다시 실행한다. 조건식이 거짓일때까지...

  • for문

    • for (변수 선언문; 조건식; 증감식) { }
    • 실행순서
      1. 변수선언문
      2. 조건식의 값이 참이면 { } 코드블럭 실행
      3. 증감식 수행
      4. 조건식이 거짓이 될때까지 2번과 3번 반복
    for (let i = 0; i < 5; i++) {
        console.log(i)
    }
    // 0, 1, 2, 3, 4
    // i가 0으로 초기화되고 0은 5보다 작으니 i에 0이 할당되고, 
    값을 올려 1도 5보다 작으니 i에 1이 할당... 5보다 작을때까지 수행
  • 중첩 for문

    //조건문 안 변수 선언 시 const를 사용하면 값 변경이 불가능해져 에러가 발생한다
    for (let i = 0; i < 5; i++) {
        for (let j = 0; j < 5; j++) {
            console.log(i, j);
        }
    }
    //0 0
      0 1
      0 2
      0 3
      0 4
      1 0
      1 1
      1 2
      1 3
      1 4
      2 0
      2 1
      2 2
      2 3
      2 4
      3 0
      3 1
      3 2
      3 3
      3 4
      4 0
      4 1  
      4 2
      4 3
      4 4
      // 우선 앞서의 for문과 같이 i는 0으로 초기화가 되고 0은 5보다 작으니 i에 할당된다. 
      거기서 끝나는게 아니라 j가 있는 for문이 실행된다. 
      j도 0으로 초기화가 되고 0은 5보다 작으니 j에 할당되는데, 
      여기서 끝나는게 아니라 i의 0이 5보다 작은 조건문 안에서 j의 조건문이 수행되기 때문에 i가 0일때 j가 5보다 작은 조건 
      즉, i의 0이 5보다 작은 조건 안에서 j의 0이 5보다 작은 조건이 계속 수행된다. 말 참 못하지만 충분히 이해했으리라...
    
      //반복문 제어 continue, break
      for (let i = 0; i < 20; i++) {
        if(i === 10) {
            console.log('i가 10에 도달함');
            break; // i가 10이 되면 for문 종료
        }
        console.log(i);
      }
    
      // break는 특정한 조건을 충족시키면 반복문을 종료시킬 때 사용
    
      for (let i = 0; i < 20; i++) {
        if(i === 10) {
            console.log('i가 10에 도달함');
            continue;
            //어쩌구 저쩌구 로직 (무시 됨)
        }
        console.log(i);
      }
      // 0 1 2 3 4 5 6 7 8 9 i가 10에 도달함 11 12 13 14 15 16 17 18 19
    
      // continue는 반복문 코드 블록 실행이 continue를 만나면 중단되고
      // continue가 있으면 continue 아래의 코드는 무시된다.
  • while 문
    for문은 반복 횟수가 비교적 명확할 때 사용하는 반면 while문은 반복 횟수가 명확하지 않을때 주로 사용한다.

    • while (조건) { }
      조건이 false가 될때까지 { } 코드 반복 실행

      let num = 5;
      while(num >= 0) {
          console.log(num);
          num--;
      }
      // 5 4 3 2 1 0
      let isActive = true;
      
      //다른 예
      let i = 0;
      while(isActive) {
          console.log('아직 true');
          if (i === 1000) {
              break;
          }
          i++;
      }
      // i가 1000이 될때까지 실행
  • do...while 문
    일단 코드를 먼저 실행 시킨 후 조건식을 평가한다.

    let count = 0;
    
    do {
    	console.log(count);
      count++;
    } while (count < 5);
    // 0 1 2 3 4 

    while과 do-while이 잘 이해가 되지 않았고, 특히 어떤 상황에서 알맞게 써야하는지 알지 못했지만, 이해하기 편하게 말하자면 조건이 맞을때에만 실행하고 싶다면 while, 꼭 한 번은 실행되어야 한다면 do-while!

profile
不怕慢, 只怕站

0개의 댓글