모던 자바스크립트 Day 10

이현정·2022년 4월 8일
1

🔖 읽은 범위: 8장 제어문 (p.93~107)

☘️ 책갈피:

제어문

  • 제어문(control flow statement) 는 조건에 따라 코드 블록을 실행(조건문)하거나 반복 실행(반복문)할 때 사용한다.

  • 제어문을 사용하면 코드의 실행 흐름을 인위적으로 제어할 수 있다.

  • 단, 제어문은 가독성을 해치기 때문에 자바스크립트에서는 가능한 제어문을 피할 수 있는 다양한 방법들을 제공한다. 이는 해당 장에서 다시 살펴볼 것이다.

  • 불가피하게 제어문을 사용해야 한다면 제대로 이해하는 것이 중요하다. 앞서 말했듯, 가독성이 떨어지기 때문에 오류를 내기 쉬운 부분이기 때문이다.

  • 블록문(block statement/compound statement): 0개 이상의 문을 중괄호({})로 묶은 것으로, 코드 블록 또는 블록이라고 부르기도 한다. 블록문({}) 은 자체종결성을 가지기 때문에 ; 을 붙일 필요 없다.

조건문

  • 조건문(conditional statement): 주어진 조건식의 평가 결과게 따라 코드 블록의 실행을 결정한다.

  • 자바스크립트는 if...else 문switch 문으로 두 가지 조건문을 제공한다.🌟

    • if...else 문:

      if (조건식) {
      	// 조건식이 참이면 실행되는 문 
      } else if (또다른 조건식) {
      	// 또다른 조건식이 참이면 실행되는 문
      } else {
      	// 조건식들이 전부 참이 아닐 때 실행되는 문
      }

      else if, else 는 생략가능하다.

    • switch 문🌟:
      주어진 표현식을 쳥가하여 그 값과 일치하는 표현식을 갖는 case 문으로 실행 흐름을 옮긴다. 일치하는 case 문이 없다면 default 문으로 이동한다.

      switch (표현식) {
      	case 표현식 1:
      		switch 문의 표현식과 표현식1이 일치하면 실행될 문;
           break;
       case 표현식2:
       	switch 문의 표현식과 표현식2가 일치하면 실행될 문;
           break;
       default:
       	switch 문의 표현식과 일치하는 case 문이 없을 때 실행될 문;
      }

      break 을 깜빡하고 쓰지 않으면, 문을 실행하고 switch 문을 탈출하지 않아 모든 switch 문으 끝날 때까지 이후의 모든 case 문과 default 문까지 실행되는 폴스루(fall through)가 발생한다. (간혹 일부러 폴스루를 이용하는 케이스도 있다.)

      if...else.. 문으로 해결할 수 있다면 해결하고, 조건문이 너무 많아 switch 문을 사용했을 때 가독성이 더 좋다면 switch 문을 사용하는 것이 권장된다.

반복문

  • 반복문(loop statement): 결과가 참인 경우 코드 블록을 실행한다. 그 후 조건식을 다시 평가히 조건식이 거짓일 때까지 반복한다.
  • 자바스크립트는 세 가지 반복문을 제공한다: for 문, while 문, do...while 문 🌟
    • for 문
     for ( 변수 선언문 또는 할당문; 조건식; 증감식) {
     	조건문이 참인 경우 반복 실행될 문;
     }
     
     //예제
     for ( var i = 0; i <2; i++ ) {
     	console.log(i); 				// 0,1
     }
    • while 문: for 문과 같지만 주로 for 문은 반복횟수가 명확할 때, while 문은 반복 횟수가 불명확할 때 사용된다. 또 문법이 다르다.
     //예제: count 가 3보다 작을 때까지 코드 블록을 반복 실행한다.
     var count = 0;
     
     while ( count < 3) {
     	console.log(count); 			//0 1 2
      count ++;
     }
    • do...while 문: 코드 블록을 먼저 실행하고 조건식을 평가한다. 따라서 코드 블록은 무조건 한 번 이상은 실행된다.
     //예제: count 가 3보다 작을 때까지 코드 블록을 반복 실행한다.
     var count = 0;
     
     do {
     	console.log(count); 			//0 1 2
      count ++;
     } while ( count < 3);

Break 문

  • break 문: 코드 블록을 탈출한다. 더 정확히는 레이블문, 반복문, 조건문 중에서도 switch 문의 코드 블록을 탈출한다. 그 외의 문에서 break 사용시 SyntaxError 가 발생한다.

Continue 문

  • continue 문: 코드 블록을 탈출하지는 않고, 현 지점에서 잠시 중단하고 반복문의 증감식(i++)으로 돌아가도록 한다.

    //예제: 특정 문자의 개수 세기
    
    var string = "Hello World!";
    var search = "l";
    var count = 0;
    
    for (var i=0, i < string.length; i++) {
    	if ( string[0] !== search ) continue; 	// 조건식이 참이 될때까지 증감식(i++) 로 돌아간다.
      	count ++; 								//continue 문이 실행되면 이 문은 실행되지 않는다.
    }

?의문점:

x

‼️ 느낀점:

  • 따로따로 볼 땐 보기에 어려워 은근히 피하던 제어문을 이렇게 깔끔히 정리해두니 생각보다 이해가 잘되어 즐거웠다! 괜히 사람들이 추천하는게 아니었군.

💖 요약:

  • 조건문 종류의 비교
    • 조건의 양이 수:
      가장 하나 안팎일 땐 삼항 조건 연산자문 ( ... ? ... : ... ), 그 다음 조건이 좀 많다 싶을 땐 if...else 문, 그 다음 조건이 가장 많을 때는 switch 문.
    • 삼항 조건 연산자문 결과는 값으로 쓸 수 있는 반면 나머지는 그럴 수 없다.
    • switch 문의 경우 break 을 써줘야 한다.
  • 반복문 종류와 비교
    • for 문과 같지만 주로 for 문은 반복횟수가 명확할 때, while 문은 반복 횟수가 불명확할 때 사용된다.
    • 문법이 다르다. for 은 () 안에 변수 선언/할당문, 조건식, 증감식 전부 다 들어가지만, while 문은 () 안에 조건식만 들어가고 변수 선언/할당과 증감식은 따로 들어간다.
  • continue 와 break

0개의 댓글