Javascript는 순차적으로 코드를 실행한다. 상황에따라 다른 코드를 수행해야 하거나 반복해서 같은 내용을 수행할 경우 코드가 길어지거나 순차적으로 실행할 수 없는 경우가 발생한다. 이 때 제어문을 쓰면 짱이다.
조건식(불리언 값으로 평가되는 표현식인 문)의 결과에 따라 블록 내부의 문의 수행을 결정하는 문
if(){}else if(){}else{}
if문의 조건식이 불리언이 아닌 타입으로 평가되는 경우 JS엔진에 의해 강제로 불리언 값으로 변하여 블록을 결정한다. 어떤 것이 false값으로 변환되고 true값으로 변환되는지는 다음장(타입변환)에서 알아보자
switch(value){
case 0:
//수행할 문장은 여기
break;
case 'A':
//수행할 문장은 여기
break;
default:
//수행할 문장은 여기
break;
switch문의 ()안에 들어가는 표현식을 평가하여 그와 같은 case인 경우 그것을 수행하는 것. 보통 ()안에는 변수를 넣는다. case나 default를 설명해주는 곳은 없었는데 이 책은 그걸 설명해 주었다. 이 문은 label문이다. label문은 식별자가 붙은 문으로 프로그램의 실행 순서를 제어하는데 사용한다. 식별자를 이용하여 break문에 식별자를 붙여 탈출한다. foo: { console.log('foo'); break foo; }처럼 사용할 수 있다. for문이나 switch문에서는 식별자를 생략할 수 있다.break를 안쓰면 default까지 쭉 내려가서 그 수행문을 수행하게 된다. 이를 이용하는 경우도 있다.(윤년 계산)
조건식의 결과가 거짓일 때까지 계속 블록 내부의 수행문을 실행한다.
for(변수선언문;조건식;증감식 //이 식들을 모두 적을 필요 없다. ;;로 값없이 구분만 한다면 무한루프){
//블록 내부 수행문
}
반복 횟수가 명확할 때 사용하는 문이다.
while(조건식//얘는 필수다!){
//블록 내부 수행문
}
반복 횟수가 불명확할 때 사용하는 문이다.
조건식에 true라고 적으면 무한루프를 생성하는데 if문으로 탈출조건을 잘 만들어주고 break로 탈출해야한다.
do{
//블록 내부 수행문
}while(조건식)
코드 블록을 먼저 실행하고 조건식을 평가한다. 초기값을 설정할 때 유용한 것 같다.
break
label문, 반복문, switch문의 코드 블록을 탈출하는데 쓰이는 문. 하나의 블록만 탈출한다. 식별자가 있다면 식별자의 블록만 탈출한다.
이외의 코드 블록 문에 사용하면 Error를 발생시킨다.
continue
반복문 중 사용 시에 반복문을 탈출하지는 않고 특정 상황에서만 continue아래 수행문을 수행하고 싶지 않은 경우 사용한다. 가독성과 효율성을 잘 고려해서 사용해야겠다.