Language/JavaScript

[JavaScript] while문 vs do-while문 차이점 비교

Kun Woo Kim 2025. 8. 6. 09:59
728x90

프로그래밍을 하다 보면 반복문을 자주 사용하게 된다. 그중에서도 while문do-while문은 조건 기반 반복문으로 자주 비교된다. 이번 글에서는 이 두 문법의 차이를 직접 코드 예제를 통해 확인하고, 실제로 어떤 상황에서 어떤 문법이 더 적합한지를 정리해본다.

1. 기본적인 차이점

while문조건을 먼저 확인한 후 코드 블록을 실행하고,
do-while문코드 블록을 먼저 실행한 후 조건을 확인한다.

// while문 - 조건 먼저 확인
let whileCounter = 0;
while (whileCounter < 3) {
    console.log(whileCounter);
    whileCounter++;
}

// do-while문 - 코드 먼저 실행
let doWhileCounter = 0;
do {
    console.log(doWhileCounter);
    doWhileCounter++;
} while (doWhileCounter < 3);

결과적으로 while문은 조건이 false이면 한 번도 실행되지 않지만, do-while문은 조건이 false여도 최소 한 번은 실행된다.

2. 조건이 처음부터 false인 경우

// while문
let whileFlag = false;
while (whileFlag) {
    console.log('이 메시지는 출력되지 않음');
}

// do-while문
let doWhileFlag = false;
do {
    console.log('이 메시지는 출력됨 (최소 1번 실행)');
} while (doWhileFlag);

while문은 조건이 false이면 코드 블록이 아예 실행되지 않지만, do-while문은 최소 한 번은 실행되므로 사용자 알림이나 초기 처리 등에 적합하다.

3. 실제 사용 시나리오 비교

사용자 입력 시뮬레이션

// while문 (잘못된 방식)
let userInput = 0;
while (userInput < 1 || userInput > 10) {
    userInput = Math.floor(Math.random() * 15);
}

// do-while문 (권장되는 방식)
let validInput;
do {
    validInput = Math.floor(Math.random() * 15);
} while (validInput < 1 || validInput > 10);

사용자에게 값을 최소 한 번은 입력받아야 할 때는 do-while문이 훨씬 적절하다.

메뉴 시스템

// while문 (문제 있음)
let menuChoice = 0;
while (menuChoice !== 4) {
    // 메뉴 출력 및 선택
}

// do-while문 (더 자연스러움)
let choice;
do {
    // 메뉴 출력 및 선택
} while (choice !== 4);

초기 메뉴 출력이 반드시 한 번은 실행되어야 하므로, 메뉴 시스템 구성 시에도 do-while문이 더 적합하다.

4. 성능 비교

// while문 성능
let whileTest = 0;
while (whileTest < 1000000) {
    whileTest++;
}

// do-while문 성능
let doWhileTest = 0;
do {
    doWhileTest++;
} while (doWhileTest < 1000000);

간단한 반복 작업에서는 성능 차이는 거의 없다. 따라서 성능보다는 코드 흐름의 자연스러움에 따라 선택하는 것이 좋다.

5. 요약

  • while문은 조건을 먼저 확인하고 실행한다.
  • do-while문은 코드를 먼저 실행한 뒤 조건을 확인한다.
  • do-while문은 조건이 false여도 최소 1회 실행된다.
  • 사용자 입력, 메뉴 시스템 등 초기 1회 실행이 필요한 경우 do-while문이 적합하다.
  • 성능상 큰 차이는 없다.

do-while문은 상대적으로 사용 빈도가 낮지만, 특정 상황에서는 매우 유용하게 사용될 수 있다. 따라서 두 문법의 차이를 정확히 이해하고 상황에 맞게 사용하는 것이 중요하다.

728x90