제어문

yeseul kim·2021년 10월 14일

제어문 control flow statment 은 조건에 따라 코드 블록을 실행(조건문)하거나 반복 실행(반복문)할 때 사용한다. 일반적으로 코드는 위에서 아래 방향으로 순차적으로 실행된다. 제어문을 사용하면 코드의 실행 흐름을 인위적으로 제어할 수 있다.

  • 1 블록문 0개 이상의 문을 중괄호로 묶은 것으로, 코드 블록 또는 블록이라고 부르기도 한다. 자바스크립트는 블록문을 하나의 실행 단위로 취급한다. 단독으로 사용할 수도 있으나 일반적으로 제어문이나 함수를 정의할 때 사용한다. 자체 종결성을 갖기 때문에 끝에 세미콜론을 붙이지 않는다. "다른 언어에서 블록문은 복합문이라고 부르기도 합니다. 블록문을 쓰면 JavaScript가 하나의 문을 기대하는 곳에서 다수의 문을 실행할 수 있습니다. JavaScript에서 이렇게 문을 묶는건 흔히 쓰이는 기법입니다. 반대 개념으로는 공백문이 있으며, 이는 하나의 구문을 기대하는 곳에 아무것도 제공하지 않는 것입니다." mdn-block 선언 키워드에 따른 변수 실행 범위 - ES6부터 let과 const 키워드는 블록 범위를 갖지만 var는 함수 범위를 갖는다. (13,15장 )

2 조건문 conditional statement

불리언 값을 갖는 조건식의 평가 결과에 따라 코드 블록의 실행을 결정한다.

2.1 if ... else 문

else if, else 문은 옵션이다. else if 문은 여러 번 사용할 수 있다.

만약 코드 블록 내의 문이 하나뿐이라면 중괄호를 생략할 수 있다.

삼항 조건 연산자로 바꿔 쓸 수 있다.

→ 조건에 따라 단순히 값을 결정하여 변수에 할당하는 경우 삼항 조건 연산자를,

조건의 가지수가 많다면 if ... else 문을 사용하는 것이 가독성면에서 좋다.

2.2 switch 문

if ... else문과는 다르게 논리적 참, 거짓보다는 다양한 상황(case)에 따라 실행할 코드 블록을 결정할 때 사용한다.

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

case 문은 상황을 의미하는 표현식을 지정하고 콜론으로 마친다. 그리고 그 뒤에 실행할 문들을 위치시킨다.

switch 문의 표현식과 일치하는 case문이 없다면 실행 순서는 default문으로 이동한다. default 문은 옵션.

fall through : 표현식 평가결과와 일치하는 case문을 실행한 후 switch 문을 탈출하지 않고 switch문이 끝날 때까지 나머지 case문과 default문을 실행하는 경우

→폴스루를 이용해 여러 개의 case 문을 하나의 조건으로 사용할 수도 있다. ( 2월의 일수를 계산하는 예)

default 문은 switch 문의 맨 마지막에 위치하므로 별도의 break 문이 필요없다.

3 반복문 loop statement

조건식의 평가 결과가 거짓일 때까지 코드 블록을 반복하여 실행한다.

3.1 for 문

for(변수 선언문 또는 할당문; 조건식; 증감식){

조건식이 참인 경우 반복 실행될 문;
}

이때 변수 선언문, 조건식, 증감식은 모두 옵션으로 반드시 사용할 필요는 없다. 어떤식도 선언하지 않으면 무한루프가 된다.

  • 중첩 for문
  • 문없이 for 사용하기 (증감식에서 값 할당하기 )

let arr = [..]

for( let i = 0; i < 10; arr[i++] = 0)

3.2 while 문

주어진 조건식의 평가 결과가 참이면 코드 블록을 계속해서 반복 실행한다.

for문은 반복 횟수가 명확할 때 주로 사용하고 while문은 반복 횟수가 불명확할 때 주로 사용한다.

  • 조건식의 도움 없이(무한루프) break문을 이용하여 코드 블록을 탈출할 수도 있다.

3.3 do ... while 문

코드 블록을 먼저 실행하고 조건식을 평가한다. 따라서 코드 블록은 무조건 한번 이상 실행된다.

4 break문

레이블 문, 반복문 switch 문의 코드 블록을 탈출한다. 이외의 코드 블록에 break문을 사용하면 syntaxError가 발생한다.

반복문을 더 이상 진행하지 않아도 될 때 불필요한 반복을 회피할 수 있다.

  • 레이블문 switch문의 case문과 default 문도 레이블 문이다. break문에 레이블 식별자를 지정함으로 탈출할 수 있다. 중첩 for문에서 레이블 문을 사용하면 내부 for문에서도 break문을 통해 외부 for문에서 탈출이 가능하다.

5 continue 문

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

for(let i = 1;  i ≤ 6; i++){

for(let j = 1; j ≤6; j++ {
if(i+j ===6) continue; 

}
}
profile
hello, world

0개의 댓글