제어문은 조건에 따라 코드블록을 실행하거나 반복 실행할때 사용함
블록문
0개 이상의 문을 중괄호로 묶은 것
코드블록 또는 블록이라 함
JS에서는 블록문을 하나의 실행 단위로 봄
조건문
주어진 조건식의 평가 결과에 따라 코드블록의 실행을 결정함
조건식은 불리언 값으로 평가될 수 있는 식이어야함
if else문
true인 경우 if, 아닌경우 else의 블록문이 실행됨
if문의 조건식은 암묵적으로 불리언 값으로 변환된다.
조건이 추가로 필요한 경우 else if문을 사용하며, 이는 여러번 사용 가능하다.
switch문
switch문은 표현식을 평가하여 그 값과 일치하는 표현식을 갖는 case문으로 실행 흐름을 옮긴다.
switch문의 표현식과 일치하는 case문이 없으면 default문을 수행한다.
default문은 선택사항이다.
폴스루
case문에 break가 없는 경우, 모든 case와 deafult문이 실행되는 것
따라서 default문에는 break가 필요하지 않다.
반복문
반복문은 조건식의 평가 결과가 참인경우 코드블록을 실행한다.
for문
for(변수선언문 또는 할당문; 조건식; 증감식){
문
}
변수 선언문, 조건식, 증감식은 모두 옵션이므로 반드시 사용할 필요는 없다.
무한루프
for(;;){...}
while문
주어진 조건식의 평가 결과가 참이면 코드 블록을 계속해서 반복 실행한다.
for문은 반복 횟수가 명확할때, while문은 반복횟수가 명확하지 않을때 사용한다.
while(조건식){...}
do…while문
do…while문은 코드블록을 먼저 실행하고 조건식을 평가한다.
따라서 코드블록은 무조건 한번이상 실행된다.
var count=0;
do{
console.log(count);
count++;
} while(count<3;);
문이 먼저 오고 while문이 옴
break문
break문은 레이블문, 반복문또는 swtich문의 코드블록을 탈출한다.
이외의 경우에 사용하면 문법에러가 발생한다.
레이블 문
식별자가 붙은 문
foo:{
console.log(1);
break foo;
console.log(2);
}
console.log('Done');
언제쓰는가?
중첩 for문에서 완전히 탈출하기 위해 사용이 가능함
outer:for(var i=0; i<3; i++){
for (var j=0; j<3; j++){
if(i+j=3) break outer;
console.log(`inner ${i},${j}`);
}
}
continue문
반복문의 코드 블록 실행을 현 지점에서 중단하고 반복문의 증감식으로 실행흐름을 이동시킨다.
즉, continue 밑의 문들은 실행되지 않는다.
break와 달리 반복문을 탈출하지는 않는다.
var string = 'Hello world.';
var search = 'l';
var count = 0;
for (var i = 0; i < string.length; i++) {
if (string[i] !== search) continue;
count++;
}
console.log(count); //3