본문 바로가기
Frontend/JavaScript

JavaScript의 기초 문법 : 제어문 - 반복문(while / for)

by 코딩쥐 2024. 7. 19.

JavaScript 제어문은 조건에 따라 로직을 실행(조건문)하거나 반복실행(반복문)할 때 사용한다. JavaScript의 반복문은 while문과 for문이 있다. 반복문의 경우에는 로직을 적게 작성하고 많은 일을 할 수 있게 하지만, 로직을 잘못 설계한 경우 무한루프 가능성이 있다. 

 

while

  • while(조건문){
    조건이 참인 동안에 반복할 로직
    };
    while에 작성된 조건문이 참일 동안에 로직을 반복하고, 거짓일 경우 로직을 빠져나와 아래 로직을 시행시킨다. 무한반복의 경우 while(true){로직};으로 가능하다.

do ~ while

  • do{
    조건이 참인 동안에 반복할 로직
    } while(조건문);
    while의 경우에는 작성된 조건문이 참일 동안에만 로직을 시행하지만, do~while을 사용할 경우 맨 처음에 조건문의 참, 거짓의 여부와 상관 없이 반드시 한번은 로직이 실행된다. 한 번 시행한 후에는 조건문이 참이면 거짓이 되기 전까지 로직을 반복한다.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        let a = 0;

        while(a<5){
            console.log(`a는 ${a}입니다`);
            a++;
        }

        let b = 0;

        do{
            console.log(`b는 ${b}입니다`);
            b++;
        }while(b>=1 && b<5);

    </script>
</body>
</html>

do ~ while문의 경우에는 b가 1이상이 아니었음에도 로직이 시행된 모습을 볼 수 있다. 


for

  • for(초기값; 비교식; 증감연산){
    조건이 참일 시 반복할 로직
    }

while에서는 증감연산의 위치에 따라 예측하기 어려운 결과가 나오는 경우가 있다. for문의 경우에는 초기값, 비교식, 증감연산을 한 번에 작성하여 이러한 단점을 개선할 수 있다. 무한반복의 경우 for( ; ; ){}; 로 가능하다. for문을 여러개 작성하는 다중for문이 있기도 하고, for..in문, for..of문, for..each문이 있다. 

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        let a = 3;
        for (let i = 0; i <= a; i++) {
            for (let j = 0; j <= a; j++) {
                console.log(`i는 ${i}, j는 ${j}입니다.`);
            }
        }

    </script>
</body>

</html>

 

특수커맨드

로직 플로우를 강제로 틀어야할 때 사용하는 것으로, continue와 break문이 있다. 

 

continue

  • continue;

while, do-while, for 등에서 로직을 스킵하고 다시 반복문의 처음으로 돌아가 로직을 시행한다. continue를 사용할 때는 continue 밑에 증감연산을 넣으면 무한루프가 되니 주의해야 한다. 

 

break

  • break;

break문은 반복문, switch문 등과 결합한 문장을 빠져나올 때 사용한다. 

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        let a = 5;
        for(let i=0; i<a; i++){
            console.log(`i는 ${i}입니다.`);
            if(i==3)continue;
        }

        for(let j=0; j<a; j++){
            console.log(`j는 ${j}입니다.`);
            if(j==2)break;
        }

    </script>
</body>

</html>

 

label

break나 continue 구문과 함께 사용한다. 반복문에 label을 작성하고, break나 continue 구문을 사용해 반복문의 어느 위치에서 작업을 멈추고 어느 위치에서 다시 수행할지를 설정할 수 있다. 그러나 label을 사용하게 되면 추적이 어려워진다는 단점이 있다. 

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        let a = 5;

        loop1:
        for(let i=0; i<a; i++){
            loop2:
            for(let j=0; j<a; j++){
                if(j==3){
                    continue loop1;
                }
                console.log(`i는 ${i}, j는 ${j}`);
            }
        }

    </script>
</body>

</html>