제어문(control flow statement) 는 조건에 따라 코드 블록을 실행(조건문)하거나 반복 실행(반복문)할 때 사용한다.
제어문을 사용하면 코드의 실행 흐름을 인위적으로 제어할 수 있다.
단, 제어문은 가독성을 해치기 때문에 자바스크립트에서는 가능한 제어문을 피할 수 있는 다양한 방법들을 제공한다. 이는 해당 장에서 다시 살펴볼 것이다.
불가피하게 제어문을 사용해야 한다면 제대로 이해하는 것이 중요하다. 앞서 말했듯, 가독성이 떨어지기 때문에 오류를 내기 쉬운 부분이기 때문이다.
블록문(block statement/compound statement): 0개 이상의 문을 중괄호({})로 묶은 것으로, 코드 블록 또는 블록이라고 부르기도 한다. 블록문({}) 은 자체종결성을 가지기 때문에 ; 을 붙일 필요 없다.
조건문(conditional statement): 주어진 조건식의 평가 결과게 따라 코드 블록의 실행을 결정한다.
자바스크립트는 if...else 문과 switch 문으로 두 가지 조건문을 제공한다.🌟
if...else 문:
if (조건식) {
// 조건식이 참이면 실행되는 문
} else if (또다른 조건식) {
// 또다른 조건식이 참이면 실행되는 문
} else {
// 조건식들이 전부 참이 아닐 때 실행되는 문
}
else if, else 는 생략가능하다.
switch 문🌟:
주어진 표현식을 쳥가하여 그 값과 일치하는 표현식을 갖는 case 문으로 실행 흐름을 옮긴다. 일치하는 case 문이 없다면 default 문으로 이동한다.
switch (표현식) {
case 표현식 1:
switch 문의 표현식과 표현식1이 일치하면 실행될 문;
break;
case 표현식2:
switch 문의 표현식과 표현식2가 일치하면 실행될 문;
break;
default:
switch 문의 표현식과 일치하는 case 문이 없을 때 실행될 문;
}
break 을 깜빡하고 쓰지 않으면, 문을 실행하고 switch 문을 탈출하지 않아 모든 switch 문으 끝날 때까지 이후의 모든 case 문과 default 문까지 실행되는 폴스루(fall through)가 발생한다. (간혹 일부러 폴스루를 이용하는 케이스도 있다.)
if...else.. 문으로 해결할 수 있다면 해결하고, 조건문이 너무 많아 switch 문을 사용했을 때 가독성이 더 좋다면 switch 문을 사용하는 것이 권장된다.
for ( 변수 선언문 또는 할당문; 조건식; 증감식) {
조건문이 참인 경우 반복 실행될 문;
}
//예제
for ( var i = 0; i <2; i++ ) {
console.log(i); // 0,1
}
//예제: count 가 3보다 작을 때까지 코드 블록을 반복 실행한다.
var count = 0;
while ( count < 3) {
console.log(count); //0 1 2
count ++;
}
//예제: count 가 3보다 작을 때까지 코드 블록을 반복 실행한다.
var count = 0;
do {
console.log(count); //0 1 2
count ++;
} while ( count < 3);
continue 문: 코드 블록을 탈출하지는 않고, 현 지점에서 잠시 중단하고 반복문의 증감식(i++)으로 돌아가도록 한다.
//예제: 특정 문자의 개수 세기
var string = "Hello World!";
var search = "l";
var count = 0;
for (var i=0, i < string.length; i++) {
if ( string[0] !== search ) continue; // 조건식이 참이 될때까지 증감식(i++) 로 돌아간다.
count ++; //continue 문이 실행되면 이 문은 실행되지 않는다.
}
x