제어문

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

- 코드는 위에서 아래 방향으로 순차적으로 실행 된다.( 제어문을 사용하면 코드의 실행 흐름을 인위적으로 제어

 

 

 

블록문

- 블록문은 0개 이상의 문을 중괄호로 묶은 것으로, 코드 블록 또는 블록이라고 부르기도 한다.

- 블록문은 하나의 실행 단위로 취급

- 블록문은 단독으로 사용할 수도 있으나 일반적으로 제어문이나 함수를 정의할 때 사용하는 것이 일반적

- 블록문은 언제나 문의 종료를 의미하는 자체 종결성을 갖기 때문에 블록문의 끝에는 세미콜론을 붙이지 않는다.

 

 

 

조건문

- 조건문은 주어진 조건식의 평가 결과에 따라 코드 블록(블록문)의 실행을 결정한다.

- 조건식은 불리언 값으로 평가될 수 있는 표현식

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

 

if ... else 문

- if ... else 문은 주어진 조건식의 평가 결과, 논리적 참 또는 거짓에 따라 실행할 코드 블록을 결정

- 조건식의 평가 결과가 true일 경우 if 문의 코드 블록이 실행되고, false일 경우 else 문의 코드 블록이 실행

- if 문의 조건식이 불리언 값이 아닌 값으로 평가되면 자바스크립트 엔진에 의해 암묵적으로 불리언 값으로 강제변환

 

 

- 조건식을 추가하여 조건에 따라 실행될 코드 블록을 늘리고 싶으면 else if 문을 사용

- else if 문과 else 문은 옵션이다.

- if문과 else 문은 2번이상  사용할 수 없지만 else if 문은 여러 번 사용할 수 있다.

 

 

- 대부분의 if ... else 문은 삼항 조건 연산자로 바꿔 쓸 수 있다. 

 

- 만약 경우의 수가 세 가지('양수', '음수', '영')라면 밑에 예제 처럼 사용 가능

 

 

 

switch 문

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

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

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

default 문은 선택사항으로, 사용할 수도 있고 사용하지 않을 수도 있다.

- if ... else 문은 논리적 참, 거짓으로 실행할 코드 블록을 결정한다면 switch문은다양한 상황(case)에 따라 실행 블록 결정

 

폴 스루( fall through )

- switch 문을 탈출하지 않고 switch문이 끝날 때까지 이후의 모든 case문과 default문을 실행하는 것

- 위 예제에서는 예상한 결과 값은 November인데 Invalid month가 결과 값으로 나옴

- 이유는 변수에 November가 할당된 후 switch 문을 탈출하지 않고 연이어 재할당되고 마지막으로 Invalid month가 재할      당  된 것이기 때문 

- 해결법은 case문에 break 문을 사용해 코드 블록에서 탈출해야 된다. ( 아래 예제 참고 ) 

- 폴스루를 활용해 여러개의 case문을 하나의 조건으로 상용할 수 있다. ( 아래 예제 참고 ) 

- 만약 if else문으로 해결이 가능하다면 switch문보다 if else문을 사용하자

- 하지만, 조건이 너무 많아 가독성이 switch문을 사용 할때 좋다면 그때 사용하자

 

 

 

반복문

- 반복문은 조건식의 평가  결과가 참인 경우 코드 블록을 실행한다.

- 그 후 조건식을 다시 평가하여 여전히 참인 경우 코드 블록을 다시 실행한다. ( 조건식이 거짓일 때까지 반복 )

- 자바스크립트는 세 가지 반복문인 for문, while문, do ...while문을 제공 

 

for 문

- for 문은 조건식이 거짓으로 평가될 때까지 코드 블록을 반복 실행한다.

- for 문은 매우 중요 많은 연습을 통해 확실히 이해

 

- for 문의 변수 선언문, 조건식, 증감식은 모두 옵션 반드시 사용할 필요는 없다. 

- 하지만 어떤 식도 선언하지 않으면 무한루가 된다.

- for 문 내에 for 문을 중첩해 사용할 수 있다. 이를 중첩 for 문이라 한다.
- 두 개의 주사위 두 눈의 합이 6인 되는 모든 경우의 수 출력 예제 

 

 

 

while 문

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

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

- while 문은 조건문의 평가 결과가 거짓이 되면 코드 블록을 실행하지 않고 종료한다.

- 조건식의 평가 결과가 불리언 값이 아니면 불리언 값으로 강제 변환하여 논리적 참, 거짓을 구별한다.

- 조건식의 평가 결과가 언제나 참이면 무한루프가 된다.

- 무한루프에서 탈출하기 위해서는 코드 블록 내에 if 문으로 탈출 조건을 만들고 break 문으로 코드 블록을 탈출한다.

 

do ... while 문

- do ... while 문은 코드 블록을 먼저 실행하고 조건식을 평가한다.

- 코드 블록은 무조건 한 번 이상 실행된다.

 

 

 

break 문

- 레이블문, 반복문, switch 문의 코드 블록을 탈출한다.

- 레이블문, 반복문, switch 문의 코드 블록 외에 break 문을 사용하면 SyntaxError(문법에러)가 발생한다.

- 레이블 문 이란? 코드 내에서 특정 지점에 이름을 지정하는 것을 의미 내부 반복문에서 외부 반복문으로 빠져나오기 위      해   사용
- 레이블 문은 중첩된 for문 외부로 탈출할 때 유용하지만 그 밖의 경우에는 일반적으로 권장하지 않는다.

- break 문은 반복문을 더 이상 진행하지 않아도 될 때 불필요한 반복을 회피할 수 있어 유용

 

 

 

continue 문

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

- break 문처럼 반복문을 탈출하지 않는다. ( 탈출하지 않고 건너뛰기 ) 
- continue 문을 만나면 아래 코드를 실행하지 않고 다시 조건문으로 돌아가 실행된다.

 

+ Recent posts