본문 바로가기
Study/Javascript 왕초보

[Javascript] 8장 제어문 (deep dive)

by jeongwle 2022. 5. 9.
728x90
반응형

 

제어문은 조건에 따라 코드 블록을 실행하거나 반복 실행할 때 사용한다. 제어문을 사용하면 위에서 아래 방향으로 순차적으로 진행되는 코드의 흐름을 제어하여 변경할 수 있다. 하지만 인위적으로 코드의 흐름을 변경할 경우 가독성을 해치는 경우가 생길 수 있다. 나중에 살펴볼 forEach, map, filter, reduce 같은 고차 함수를 사용한 함수형 프로그래밍 기법에서는 제어문의 사용을 억제하여 복잡성을 해결하려 노력한다. 제어문을 바르게 이해하는 것이 코딩 스킬에 많은 영향을 주기 때문에 확실히 이해해보자.

 

블록문

  • 0개 이상의 문을 중괄호로 묶은 것으로, 코드 블록 또는 블록이라고 부른다.
  • 일반적으로 제어문이나 함수를 정의할 때 사용한다.
  • 블록문은 언제나 문의 종료를 의미하는 자체 종결성을 갖기 때문에 블록문의 끝에 세미콜론은 생략한다.
//블록문
{
    var foo = 10;
}

// 제어문
var x = 1;
if (x < 10) {
	x++;
}

// 함수 선언문
function sum(a, b) {
	return a + b;
}

 

조건문

  • 조건문은 주어진 조건식의 평가 결과에 따라 코드 블록(블록문)의 실행을 결정한다.
  • 자바스크립트에서는 if, else if ... else 문과 switch 문 두 가지를 제공한다.
// if ... else

var num = 2;
var numType;

if (num % 2){
    numType = '홀수';
}
else {
    numType = '짝수';
}

console.log(numType); // 짝수

// switch

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

var x = 4;

switch(x % 2){
    case 0:
    console.log('짝수 입니다.');
    break;
    case 1:
    console.log('홀수 입니다.');
    break;
    default:
    console.log('둘다 아닙니다');
}

 

반복문

  • 반복문은 조건식의 평가 결과가 참인 경우 코드블록을 실행한다. 조건식이 거짓이 될 때까지 반복된다.
  • 자바스크립트는 세 가지 반복문인 for 문, while 문, do...while 문을 제공한다.
// for 문
for (변수 선언문 또는 할당문; 조건식; 증감식){
    조건식이 참인 경우 반복 실행될 문;
}

var result = 0;
for (var i = 1; i < 10; i++{
	result += i;
}
console.log(result); // 45

// while 문

var x = 1;

while (x < 10){
    console.log(x); // 1 2 3 4 5 6 7 8 9
    x++;
}

// do...while 문
// do...while 문은 코드 블록을 먼저 실행하고 조건식을 평가한다. 따라서 코드 블록은 무조건 한 번 이상 실행된다.

var count = 0;

do {
    console.log(count); // 0 1 2
    count++;
} while (count < 3);

 

break 문

  • 레이블 문, 반복문(for, for...in, for...of, while, do...while), switch 문의 코드 블록을 탈출한다.

 

continue 문

  • continue 문은 반복문의 코드 블록 실행을 현 지점에서 중단하고 반복문의 증감식으로 실행 흐름을 이동시킨다.
var string = 'Hello World.';
var search = 'l';
var count = 0;

for (var i = 0; i < string.length; i++){
    if (string[i] !== search){
        continue;
    }
    count++; // continue 문이 실행되면 이 문은 실행되지 않는다.
}

console.log(count); // 3
728x90
반응형

댓글