조건문 (Conditionals)
조건문은 프로그램 실행 흐름을 제어하는 기본 문법으로, 주어진 조건이 참이면 특정 코드를 실행하고, 거짓이면 다른 코드를 실행한다. 조건문은 반드시 true
또는 false
로 평가되어야 하며, 참일 경우 해당 블록이 실행되고, 거짓이면 건너뛴다.
less
조건문 (Conditionals)
├── if 문
├── if - else 문
├── if - else if 문
└── switch/case 문
(1) if 문
if 문은 조건이 true
일 경우에만 특정 코드를 실행한다. 가장 기본적인 조건문이며, "이 조건이 맞으면 실행해라"라는 단순한 구조를 가진다. 조건이 false일 경우, 코드 블록은 무시되고 아무 동작도 하지 않는다.
js
if (조건) {
// 조건이 참일 때 실행될 코드
}
js
let num = 10;
if (num === 10) {
console.log("num의 값은 10 입니다."); // num의 값은 10 입니다.
}
(2) if - else 문
조건이 true
일 경우 if 블록을, false
이면 else 블록을 실행한다.
js
if (조건) {
// 조건이 참일 때 실행
} else {
// 조건이 거짓일 때 실행
}
js
let num = 5;
if (num === 10) {
console.log("num값은 10입니다.");
} else {
console.log(`num값은 ${num}입니다.`); // ${} 템플릿 리터럴 활용을 위해 ``으로 문자열 감싸줌
}
// num값은 5입니다.
(3) if - else if 문
여러 조건 중 하나를 선택해야 할 때 사용한다. 위에서부터 순차적으로 조건을 검사하며, 처음으로 true
가 되는 조건의 블록만 실행된다.
js
if (조건1) {
// 조건1 참일 때 실행
} else if (조건2) {
// 조건2 참일 때 실행
} else {
// 모든 조건이 거짓일 때 실행
}
js
let num = 5;
if (num === 10) {
console.log("num값은 10입니다.");
} else if (num < 10) {
console.log("num값은 10보다 작습니다.");
} else {
console.log("num값은 10보다 큽니다.");
}
// num값은 10보다 작습니다.
(4) switch/case 문
switch문은 변수의 값에 따라 여러 가지 경우로 분기 처리할 때 사용하는 조건문으, 주로 값이 여러 개로 나뉘는 경우에 사용된다. 내부적으로 ===
연산자와 같은 엄격한 비교를 수행하므로, 변수 값과 case
값의 타입이 일치해야 해당 블록이 실행된다. 예를 들어, case "10"
와 case 10
은 서로 다른 것으로 취급된다.
js
let 변수명 = 값;
switch (변수명) {
case 값1:
// 실행할 코드1
break;
case 값2:
// 실행할 코드2
break;
default:
// 모든 case에 일치하지 않을 때 실행할 코드
}
case 값
: 변수 값과 일치할 경우 실행할 코드 블록을 나타낸다.break
: 해당 case 실행 후 switch 문을 빠져나오게 한다.default
: 일치하는 case가 없을 때 실행되는 코드이다.
js
let fruit = "apple";
switch (fruit) {
case "banana":
console.log("바나나");
break;
case "orange":
console.log("오렌지");
break;
case "apple":
console.log("사과");
break;
case "grape":
console.log("포도");
break;
default:
console.log("다른 과일");
}
// 사과
Fall-through 현상 (break문 생략 시)
break
문을 생략하면, 해당 조건에 맞는 case부터 이후 모든 case 코드가 연속해서 실행된다. 이를fall-through
현상이라고 하며, 일반적으로 의도치 않은 오류 원인이 되지만, 특정 상황에서는 의도적으로 활용하기도 한다.
js
let fruit = "apple";
switch (fruit) {
case "banana":
console.log("바나나");
case "apple":
console.log("사과");
case "grape":
console.log("포도");
default:
console.log("다른 과일");
}
// 사과
// 포도
// 다른 과일