제어문은 조건에 따라 코드블록을 실행(조건문)하거나, 반복 실행(반복문)할때 사용한다.
블록문
블록문은 0개 이상의 문을 중괄호로 묶은 것으로, 코드 블록 또는 블록이라고 부르기도 한다.
자바스크립트는 블록문을 하나의 실행단위로 취급한다.
블록문은 단독으로 사용할 수도 있으나, 일반적으로는 제어문이나 함수를 정의할 때 사용한다.
문의 끝에는 세미콜론을 붙이는 것이 일반적이지만, 블록문은 언제나 문의 종료를 의미하는 자체 종결성을 갖기 때문에 블록문의 끝에는 세미콜론을 붙이지 않는다.
// 블록문
{
var foo = 10;
}
// 제어문
var x = 1;
if (x < 10) {
x ++;
}
// 함수 선언문
function sum(a,b) {
return a + b;
}
조건문
조건문은 주어진 조건식의 평가 결과에 따라 코드블록(블록문)의 실행을 결정한다.
조건식은 불리언 값으로 평가될 수 있는 표현식이다.
if (조건식) {
// 조건식이 true면 이 코드 블록을 실행
} else {
// 조건식이 false면 이 코드 블록을 실행
}
만약 if 문의 조건식이 불리언 값이 아닌 값으로 평가되면 자바스크립트 엔진에 의해 타입이 불리언 값으로 강제 변환되어 실행할 코드블록을 결정한다(암묵적 타입 변환).
switch문
switch문은 주어진 표현식을 평가하여 그 값과 일치하는 표현식을 갖는 case문으로 실행 흐름을 옮긴다.
switch문은 논리적 참, 거짓 보다는 다양한 상황(case)에 따라 실행할 코드 블록을 결정할 때 사용한다.
var season = 'spring';
var seasonName;
switch (season) {
case 'spring' : seasonName = '봄';
case 'summer' : seasonName = '여름' ;
case 'autumn' : seasonName = '가을';
case 'winter' : seasonName = '겨울';
default : seasonName = '모르겠습니다';
}
console.log(seasonName); // 모르겠습니다
switch문의 표현식이 평가 결과와 일치하는 case문으로 실행 흐름이 이동하여 문을 실행한 것은 맞지만, 문을 실행한 후 switch문을 탈출히자 않고 switch문이 끝날 때까지 이후의 모든 case문과 default 문을 실행했기 때문이다.
이를 폴스루(fall through)라 한다.
즉, seasonName 변수에 '봄'이 할당 되고, switch문을 탈출하지 않고 연이어 '여름', '가을', '겨울'이 재할당되고 마지막으로 '모르겠습니다'가 재할당 된것이다.
break문이 없다면, case문의 표현식과 일치하지 않더라도 실행 흐름이 다음 case문으로 연이어 이동한다.
따라서 다음과 같이 활용해줄 수도 있다.
var favoritSeason = 'winter';
var answer;
switch (favoritSeason) {
case 'spring': case 'summer': case 'autumn':
answer = '싫어합니다' ;
break;
case 'winter' :
answer = '좋아합니다';
break;
}
console.log(answer); // 좋아합니다
반복문
반복문은 조건식의 평가 결과가 참인 경우 코드 블록을 실행한다.그 후 조건식을 다시 평가하여 여전히 참인 경우 코드 블록을 다시 실행한ㅎ며, 조건식이 거짓일 때까지 반복된다.
자바스크립트는 세가지 반복문인 for문, while문, do...while 문을 제공한다.
'Read > Morden Javascript Deep Dive' 카테고리의 다른 글
[Modern Javascript Deep Dive] 10~12장 인사이트 정리 (0) | 2023.12.20 |
---|---|
[Modern Javascript Deep Dive] 8~9장 인사이트 정리 (1) | 2023.11.11 |
[Modern Javascript Deep Dive] 7장 연산자 (0) | 2023.02.08 |
[Modern Javascript Deep Dive] 6장 데이터 타입 (0) | 2023.02.03 |
[Modern Javascript Deep Dive] 5장 표현식과 문 (0) | 2023.02.02 |