조건문과 반복문
우리가 일상생활에서 어떤 결정을 내리거나 특정 행동을 반복할 때, "만약 ~라면 ~을 한다" 또는 "~하는 동안 ~을 반복한다"와 같은 사고방식을 따릅니다. 프로그래밍에서도 이와 유사하게 특정 조건에 따라 다른 코드를 실행하거나, 특정 작업을 여러 번 수행해야 할 때가 있습니다. 이때 사용되는 것이 바로 조건문(Conditional Statement) 과 반복문(Loop Statement) 입니다.
조건문과 반복문은 프로그램의 흐름을 제어하는 핵심적인 요소이며, 이를 통해 우리는 훨씬 더 유연하고 강력한 애플리케이션을 만들 수 있게 됩니다. 이번 장에서는 자바스크립트에서 제공하는 다양한 조건문과 반복문을 하나씩 살펴보며, 프로그램의 논리를 설계하는 방법을 익혀보겠습니다.
조건문: 상황에 따라 다르게 행동하기
조건문은 주어진 조건이 true
인지 false
인지에 따라 다른 코드 블록을 실행하도록 합니다. 마치 "만약 비가 오면 우산을 가져가고, 그렇지 않으면 그냥 나간다"와 같은 판단을 프로그램에 심어주는 것과 같습니다. 자바스크립트에서는 주로 if
, else if
, else
, 그리고 switch
문을 사용하여 조건을 처리합니다.
if
, else if
, else
: 기본적인 조건 판단
가장 흔하게 사용되는 조건문으로, 특정 조건이 참일 때만 코드를 실행하고 싶을 때 사용합니다.
let temperature = 20;
if (temperature > 25) {
console.log("오늘은 매우 덥습니다. 시원하게 입으세요.");
} else if (temperature >= 20) { // 위의 조건이 거짓이고, temperature가 20 이상일 때
console.log("오늘은 쾌적한 날씨입니다.");
} else { // 위의 모든 조건이 거짓일 때
console.log("오늘은 쌀쌀합니다. 따뜻하게 입으세요.");
}
// 현재 temperature가 20이므로, "오늘은 쾌적한 날씨입니다."가 출력됩니다.
if (조건)
: 괄호 안의조건
이true
이면{}
안의 코드 블록이 실행됩니다.else if (다른 조건)
:if
문의 조건이false
일 때,else if
의다른 조건
을 확인합니다. 이 조건이true
이면 해당 코드 블록이 실행됩니다.else if
는 여러 개를 붙일 수 있습니다.else
:if
문과 모든else if
문의 조건이 모두false
일 때,else
뒤의 코드 블록이 실행됩니다.else
는 필수가 아닙니다.
참고: 조건문의 조건식
조건문 괄호 ()
안에는 불리언(boolean) 값으로 평가될 수 있는 모든 표현식이 올 수 있습니다. 비교 연산자(>
, <
, ===
등)나 논리 연산자(&&
, ||
, !
)를 조합하여 복잡한 조건을 만들 수 있습니다.
let age = 18;
let hasConsent = true;
if (age >= 19 && hasConsent) { // age가 19 이상이고, hasConsent가 true일 때
console.log("성인 콘텐츠를 이용할 수 있습니다.");
} else {
console.log("성인 콘텐츠 이용이 불가능합니다.");
}
// age가 18이므로, "성인 콘텐츠 이용이 불가능합니다."가 출력됩니다.
switch
문: 여러 개의 경우를 깔끔하게 처리하기
if-else if-else
문으로도 여러 조건을 처리할 수 있지만, 특정 변수의 값이 여러 경우의 수 중 하나와 일치하는지 확인할 때는 switch
문이 더 깔끔하고 가독성이 좋습니다.
let dayOfWeek = "월요일";
switch (dayOfWeek) {
case "월요일":
console.log("오늘은 월요일입니다. 새로운 한 주가 시작됩니다.");
break; // 현재 case의 코드 실행을 중단하고 switch 문을 빠져나갑니다.
case "수요일":
console.log("오늘은 수요일입니다. 한 주의 중간 지점!");
break;
case "금요일":
console.log("오늘은 금요일입니다. 주말이 기다려집니다.");
break;
default: // 위에 나열된 어떤 case와도 일치하지 않을 때 실행됩니다.
console.log("평범한 요일입니다.");
break;
}
// dayOfWeek가 "월요일"이므로, "오늘은 월요일입니다. 새로운 한 주가 시작됩니다."가 출력됩니다.
switch (표현식)
: 괄호 안의표현식
의 값을 평가합니다.case 값:
:switch
표현식의 값이case
뒤의값
과 일치하면 해당case
블록의 코드가 실행됩니다.break;
: 이 키워드는 해당case
블록의 실행을 멈추고switch
문 전체를 빠져나가도록 합니다.break
가 없으면, 일치하는case
이후의 모든case
(심지어default
까지)가 연달아 실행됩니다. 이를 "폴스루(fall-through)"라고 하며, 의도적으로 사용하는 경우도 있지만 대부분의 경우 원치 않는 결과를 초래하므로 주의해야 합니다.default:
:switch
표현식의 값이 어떤case
와도 일치하지 않을 때 실행되는 블록입니다.else
와 유사합니다.default
는 필수가 아닙니다.
삼항 연산자: 간결한 조건식
삼항 연산자 (Conditional Ternary Operator)는 조건에 따라 두 값 중 하나를 선택하는 간결한 방법을 제공합니다. 주로 간단한 조건에 따라 변수에 값을 할당하거나 반환할 때 유용합니다.
let age = 20;
let message = (age >= 19) ? "성인입니다." : "미성년자입니다.";
console.log(message); // 결과: 성인입니다.
let isMorning = true;
let greeting = isMorning ? "좋은 아침입니다!" : "안녕하세요!";
console.log(greeting); // 결과: 좋은 아침입니다!
형식은 조건 ? 값1 : 값2
입니다. 조건
이 true
이면 값1
이 선택되고, false
이면 값2
가 선택됩니다.
반복문: 작업을 여러 번 반복하기
반복문은 특정 코드 블록을 조건이 만족하는 동안 계속해서 실행하거나, 특정 횟수만큼 반복하도록 합니다. 이는 반복적인 작업을 수동으로 여러 번 작성할 필요 없이 효율적으로 처리할 수 있게 해줍니다. 자바스크립트에서는 for
, while
, do...while
등의 반복문을 제공합니다.
for
문: 정해진 횟수만큼 반복하기
for
문은 가장 흔하게 사용되는 반복문으로, 반복 횟수가 명확하거나 특정 범위 내에서 반복해야 할 때 유용합니다.
for (let i = 0; i < 5; i++) {
// 0부터 4까지 5번 반복됩니다.
console.log(i + "번째 반복입니다.");
}
/*
결과:
0번째 반복입니다.
1번째 반복입니다.
2번째 반복입니다.
3번째 반복입니다.
4번째 반복입니다.
*/
for
문은 괄호 ()
안에 세 부분으로 구성됩니다.
초기화 식 (Initialization): 반복문이 시작될 때 단 한 번 실행됩니다. 보통 반복 횟수를 세는 변수(예: i
)를 선언하고 초기값을 할당합니다. (let i = 0;
)
조건 식 (Condition): 매 반복이 시작되기 전에 평가됩니다. 이 조건이 true
이면 코드 블록이 실행되고, false
이면 반복문이 종료됩니다. (i < 5;
)
증감 식 (Increment/Decrement): 코드 블록이 한 번 실행된 후 매번 실행됩니다. 보통 반복 변수의 값을 증가시키거나 감소시킵니다. (i++
)
while
문: 조건이 만족하는 동안 반복하기
while
문은 특정 조건이 true
인 동안 코드 블록을 계속해서 반복합니다. for
문과 달리 반복 횟수가 명확하지 않을 때, 즉 어떤 조건이 만족될 때까지 반복해야 할 때 주로 사용됩니다.
let count = 0;
while (count < 3) { // count가 3보다 작은 동안 반복
console.log("현재 카운트: " + count);
count++; // count 값을 1 증가시킵니다. 이 부분이 없으면 무한 루프에 빠집니다!
}
/*
결과:
현재 카운트: 0
현재 카운트: 1
현재 카운트: 2
*/
주의: 무한 루프(Infinite Loop)
while
문에서 조건을 변화시키는 부분이 없거나, 조건이 항상 true
로 유지되는 경우 반복문이 영원히 끝나지 않는 무한 루프에 빠질 수 있습니다. 이는 브라우저를 멈추게 하거나 프로그램에 심각한 문제를 일으킬 수 있으므로 주의해야 합니다. 항상 반복을 종료시킬 수 있는 조건 변화를 코드 내에 포함해야 합니다.
do...while
문: 최소 한 번은 실행
do...while
문은 while
문과 유사하지만, 조건식을 나중에 평가한다는 차이점이 있습니다. 이 말은 조건이 처음부터 false
이더라도, 코드 블록이 최소 한 번은 실행된 후 조건 검사를 한다는 의미입니다.
let num = 5;
do {
console.log("이 메시지는 최소 한 번은 출력됩니다. num: " + num);
num++;
} while (num < 3); // 조건이 false이지만, 이미 한 번 실행되었습니다.
/*
결과:
이 메시지는 최소 한 번은 출력됩니다. num: 5
*/
주로 사용자로부터 유효한 입력을 받을 때처럼, 일단 코드를 실행하고 그 결과에 따라 반복 여부를 결정해야 할 때 유용하게 사용됩니다.
반복문 제어: break
와 continue
때로는 반복문 내부에서 특별한 상황을 처리하고 싶을 때가 있습니다. break
와 continue
키워드가 이때 사용됩니다.
-
break
: 현재 실행 중인 반복문을 즉시 종료하고, 반복문 다음의 코드로 제어를 옮깁니다.switch
문에서 사용되는break
와 동일한 역할을 합니다.for (let i = 0; i < 10; i++) { if (i === 5) { console.log("i가 5가 되어 반복문을 종료합니다."); break; // i가 5가 되면 반복문이 멈춥니다. } console.log(i); } /* 결과: 0 1 2 3 4 i가 5가 되어 반복문을 종료합니다. */
-
continue
: 현재 반복 주기의 나머지 부분을 건너뛰고, 다음 반복 주기로 즉시 넘어갑니다.for (let i = 0; i < 10; i++) { if (i % 2 === 0) { // i가 짝수이면 continue; // 아래 코드를 건너뛰고 다음 반복으로 넘어갑니다. } console.log(i + "는 홀수입니다."); } /* 결과: 1는 홀수입니다. 3는 홀수입니다. 5는 홀수입니다. 7는 홀수입니다. 9는 홀수입니다. */
마무리하며
이번 장에서는 프로그램의 흐름을 조절하는 두 가지 강력한 도구인 조건문과 반복문에 대해 상세히 학습했습니다. if-else
, switch
문을 통해 다양한 상황에 따라 코드를 분기하고, for
, while
문을 통해 반복적인 작업을 효율적으로 수행하는 방법을 익혔습니다. 또한 break
와 continue
를 사용하여 반복문의 미세한 제어도 가능해졌습니다.
이러한 제어문들은 여러분이 작성하는 프로그램에 논리와 생명력을 불어넣는 핵심 요소가 될 것입니다. 배운 내용을 바탕으로 다양한 예제를 직접 코딩해보면서 익숙해지는 것이 중요합니다. 다음 장에서는 이어서 자바스크립트의 함수 개념에 대해 알아보겠습니다.