8장: 제어문
제어문은 조건에 따라 코드 블록을 실행하거나 반복 실행할 때 사용한다.
제어문은 코드의 실행 흐름을 인위적으로 제어
하기 때문에 가독성이 떨어진다.
💡
블록문이란?
- 블록문은 0개 이상의 중괄호로 묶은 것 (코드 블록 or 블록)
- 블록문은 하나의 실행 단위로 취급되며, 제어문 또는 함수 선언에 사용된다.
- 블록문은
자체 종결성
을 갖으므로 ;
을 붙이지 않는다.
조건문
주어진 조건식의 평가 결과에 따라 코드 블록(블록문)의 실행을 결정한다.
if ... else문
if-else문은 주어진 조건식의 평가 결과에 따라 코드 블록의 실행을 결정한다.
- 조건식의 평가 결과가
true
인 경우 → if
블록 실행
- 조건식의 평가 결과가
false
인 경우 → else
실행
이 때 조건식은 boolean 값으로 평가 돼야 하며, 아닌 경우 암묵적 형변환
이 일어난다.
삼항 연산자와 if문
조건에 따라 단순히 값을 변수에 할당하는 경우, 값으로 평가되는 표현식인 삼항 연산자
를 사용하는 것이 좋다. 가독성도 훨씬 좋아진다!
- 대부분의 if문은 삼항 조건 연산자로 바꿔 쓸 수 있다.
let 변수 = 조건 ? 참일_경우_값 : 거짓일_경우_값;
switch문
- 주어진 표현식을 평가하여 그 값과 일치하는 표현식을 갖는
case
문으로 실행 흐름을 옮긴다.
- 조건식은 문자열, 숫자로 많이 평가 된다.
- switch문의 표현식과 일치하는 case문이 없다면 실행 순서는 default문으로 이동, default문의 사용은 선택사항이다.
중요한 점! case문 마지막에 break
를 작성하지 않으면 다른 case문의 break
를 만나거나 switch문이 끝날 때까지 실행이 종료되지 않는다.
추가로 알게된 점... default문은 어디에 오든 상관이 없다! case
문을 순차적으로 먼저 검색한뒤, 일치하는 case
문이 없으면 default
문이 실행된다!
switch문의 폴스루
- 폴스루 : 문을 실행한 후 switch문을 탈출하지 않고 switch문이 끝날 때까지 이후의 모든 case문과 default문을 실행하는 것
- 폴스루를 이용해 여러 개의 case문을 하나의 조건으로 사용할 수 있다.
반복문
- 조건식의 평가 결과가
거짓
이 될 때까지 코드 블록을 반복 실행
한다.
for문
- 조건식이 거짓으로 평가될 때까지 코드 블록을 반복 실행한다.
- 변수 선언문, 조건식, 증감식으로 구성된다.
- 반복 횟수가 명확할 때 사용한다.
for (var i = 0; i < 2; i++){
console.log(i);
}
무한루프
for(;;){
}
while문
- 조건식의 평가결과가 참이면 코드 블록을 반복 실행한다.
- 반복 횟수가 불명확할 때 사용한다.
while (true) {
...
if ( ) break;
}
무한루프
while(true){
}
while문
- 코드 블록을 먼저 실행하고 조건식을 평가한다.
- 코드 블록은 무조건 한 번 이상 실행된다.
break문
- break문은
레이블 문
, 반복문
, switch문
의 코드 블록을 탈출한다.
→ 이 외에 사용시 SyntaxError(문법에러) 발생
- 레이블문: 식별자가 붙은 문으로, 프로그램의 실행 순서를 제어하는데 사용한다.
- 중첩된 for문의 내부 for문에 break를 사용하면 내부 for문을 탈출한다.
- 외부 for문을 탈출하고 싶으면 레이블 문을 사용해야 하지만, 객체로 오해받기 쉬운 형태를 띄고 있기 떄문에 사용하지 않는 것이 좋다. 또한 프로그램의 흐름이 복잡해져서 가독성이 나빠지고 오류를 발생시킬 가능성이 높아진다.
continue문
- continue 문은 반복문의 코드 블록 실행을 현 지점에서 중단하고 반복문의 증감식으로 실행흐름을 이동시킨다.
참고해볼 자료
참고한 링크
https://joyful-development.tistory.com/26