제어문

1. 제어문이란?

제어문 control flow statement 은 조건문이나 반복문을 뜻한다.

2. 블록문

블록문 block statement 은 0개 이상의 문을 중괄호 { … } 로 묶은 것으로, 코드 블록이라고 부른다.

문의 끝에는 세미콜론 ; 을 붙이지만 블록문의 끝에는 세미콜론 ; 을 붙이지 않는다.

3. 조건문

if … else 문

대부분의 if … else 문은 3항 조건 연산자로 바꿔 쓸 수 있다.

const num = 0;
let result;
if (num > 0) {
  result = '양수';
} else if (num < 0) {
  result = '음수';
} else {
  result = '영';
}
console.log(result); // '영'

if … else 문을 3항 연산자를 이용해 다음과 같이 바꿔쓸 수 있다.

const num = 0;
let result = num > 0 ? '양수' : num < 0 ? '음수' : '영';
console.log(result); // '영'

3항 연산자는 if … else문과 다르게 표현식 expression을 만든다.

num > 0 ? '양수' : ‘음수’ 는 표현식이므로 값으로 사용할 수 있다.

따라서 result 변수에 할당할 수 있다.

조건에 따라 단순히 값을 결정하여 변수에 할당하는 경우, 3항 연산자를 사용하는 편이 좋다.

switch 문

switch 문은 주어진 표현식을 평가하여 그 값과 일치하는 표현식을 갖는 case문으로 실행 흐름을 옮긴다.

switch (표현식) {
  case 표현식1:;
    break;
  case 표현식2:;
    break;
  default:;
}

switch 문은 논리적 참, 거짓보다는 다양한 상황 case 에 따라 실행할 코드 블록을 결정할 때 사용한다.

4. 반복문

반복문은 조건식의 평가 결과가 true 인 경우 코드 블록을 실행한다.

for 문

while 문

do … while 문

자바스크립트는 세 가지 반복문인 for, while, do … while 문을 제공한다.

반복문을 대체할 수 있는 기능

  • Array.prototype.forEach: 자바스크립트는 배열을 순회할 때 사용
  • for … in: 객체의 property 열거
  • for … of: iterable 순회

5. break 문

break 문은 label 문, switch 문, 반복문의 코드 블록을 탈출한다.

label 문이란?

label 문이란 식별자가 붙은 문을 말한다.

foo: for (let i = 1; i < 10; i++) {
  for (let j = 1; j < 3; j++) {
    if (i > 2) break foo;
    console.log(`${i} * ${j} = ${i * j}`);
  }
}
/* 실행결과
1 * 1 = 1
1 * 2 = 2
2 * 1 = 2
2 * 2 = 4 
*/

label 문은 중첩된 for 문 외부로 탈출할 때 유용하다.

그 밖의 경우에는 사용을 권장하지 않는다.

6. continue 문

continue문은 반복문의 코드 블록 실행을 현 시점에서 중단하고 반복문의 첫 부분으로 실행 흐름을 이동시킨다.