deep dive - 제어문

CH_Hwang·2024년 5월 26일
0

deep-dive

목록 보기
5/6

제어문

  • 조건문 또는 반복문을 말한다.

블록문

  • 0개 이상의 문을 중괄호로 묶은 것으로 코드블록 또는 블록이라고 부르기도 한다.

조건문

  • 조건식의 평가 결과에 따라 코드 블록의 실행을 결정한다.
  • 자바스크립트에서는 두가지 조건문이 존재한다.
    • if...else, switch

if...else문

  • 조건식의 평가 결과가 true면 if문의 코드블록이 실행되고 false면 else 문의 코드 블록이 실행된다.
if(조건식) {
  // 조건식이 true면 여기가 실행
} else{
  // 조건식이 false면 여기가 실행
}
  • 조건식은 boolean으로 평가가 되어야하는데 boolean이 아니라면 암묵적으로 강제변환되어 평가된다.
  • else, else if는 사용해도 되고 안해도 된다.
  • 만약 코드 블록 내의 문이 하나뿐이면 중괄호를 생략할 수 있다.
const x = 2;
let result;

if(x%2) result = '홀수';

switch 문

  • 주어진 표현식을 평가하여 그 값과 일치하는 표현식을 갖는 case문으로 실행 흐름을 옮긴다.
switch (표현식) {
  case 표현식1:
    // switch문의 표현식과 표현식1이 일치하면 실행될 문;
    break;
  case 표현식2:
    // switch문의 표현식과 표현식2가 일치하면 실행될 문
    break;
  default:
    // 일치하는 케이스가 없을 때 실행될 문
}

switch 문에서 주의할 점은 case문을 실행한 후 탈출하지 않고 모든 case문과 default문을 실행한다. 그렇기 때문에 break로 코드블록을 탈출하거나 return으로 탈출해야한다.
이걸 이용하면 아래와 같이 쓸 수 있다.

switch (표현식) {
  case 표현식1:
  case 표현식2:
    // switch문의 표현식과 표현식1 또는 표현식2가 일치하면 실행될 문;
    break;
  case 표현식3:
    // switch문의 표현식과 표현식3이 일치하면 실행될 문
    break;
  default:
    // 일치하는 케이스가 없을 때 실행될 문
}

반복문

  • 조건식의 평가 결과가 거짓이 될때까지 계속 반복된다.
  • 자바스크립트는 세개의 반복문을 가지고 있다.
  • for, while, do...while

for문

for (변수 선언문 또는 할당문; 조건식; 증감식) {
 조건식이 참인 경우 반복 실행될 문; 
}
  • 위와 같이 사용하는게 가장 일반적인 형태이다.
for (let i=0; i<10; i++){
 console.log(i) // 0,1,2,3,4,5,6,7,8,9 
}

for (;;) { ... } // 무한루프

while문

  • for문은 반복 횟수가 명확할 때 주로 사용하고 while문은 반복 횟수가 불명확할 때 주로 사용한다.
let count = 0;
while (count < 3) {
  console.log(count); // 0 1 2
  count++;
}

while (true) { ... } // 무한루프

무한루프에서 탈출하려면 break를 사용하면 탈출할 수 있다.

do...while문

  • 코드 블록을 먼저 실행하고 조건식을 평가한다.
    • 무조건 한번은 실행된다.
let count = 0;
do {
  console.log(count); // 0 1 2
  count++;
} while (count < 3);

do문은 tc39에서 stage 1단꼐에 있어서 do문만 따로 사용할 날이 올지도 모른다
https://github.com/tc39/proposal-do-expressions?tab=readme-ov-file

break문

  • 코드 블록을 탈출한다.
    • 다만 레이블문, 반복문, switch문 에서만 동작하고 나머지는 문법 에러가 발생한다.
  • 레이블 문은 식별자가 붙은 문을 말한다.
foo: console.log('foo');
  • 레이블문은 실행 순서를 제어하는 데 사용된다.
foo: {
  console.log(1);
  break foo;
  console.log(2);
}
outer: for (let i=0; i < 3; i++){
 for (let j=0; j<3; j++){
   if (i+j === 3) break outer;
   console.log(i,j)
 }
}
  • 원래라면 break를 두번해야하지만 outer를 break해버리면 한번에 탈출한다.

continue문

  • 반복문의 코드블록실행을 현지점에서 중단하고 증감식으로 실행 흐름을 이동시켜버린다.

0개의 댓글