모던 자바스크립트 딥다이브: 8장 정리

조하은·2024년 8월 30일
0

딥다이브 1회독

목록 보기
1/1

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

0개의 댓글