개발/javascript

제어문02 - if...else 문

마루쨩 2023. 9. 20. 00:22

"제어문"

 

2. 조건문

조건문(conditional statement)은 주어진 조건식(conditional expression)의 평가 결과에 따라 코드 블럭(블록문)의 실행을 결정한다. 조건식은 불리언 값으로 평가될 수 있는 표현식이다.

 

자바스크립트는 2가지의 조건문 if...else 문 switch 문을 제공한다.

 

2.1. if...else 문

if...else 문은 주어진 조건식(불리언 값으로 평가될 수 있는 표현식)의 평과 결과, 즉 논리적 참 또는 거짓에 따라 실행할 코드 블록을 결정한다. 조건식의 결과가 참(true)일 경우, if 문 다음의 코드 블록이 실행되고 거짓(false)일 경우, else 문 다음의 코드 블록이 실행된다.

if (조건식) {
	// 조건식이 참이면 이 코드 블록이 실행된다.
} else {
	// 조건식이 거짓이면 이 코드 블록이 실행된다.
}

if 문의 조건식은 불리언 값으로 평가되어야 한다. 만약 if 문의 조건식이 불리언 값이 아닌 값으로 평가되면 자바스크립트 엔진에 의해 암묵적으로 데이터 타입이 불리언 값으로 강제 변환되어 실행할 코드 블록을 결정한다. 

 

조건식을 추가하여 조건에 따라 실행될 코드 블록을 늘리고 싶으면 else if 문을 사용한다.

if (조건식1) {
	// 조건식1이 참이면 이 코드 블록이 실행된다.
} else if (조건식2) {
	// 조건식2이 참이면 이 코드 블록이 실행된다.
} else {
	// 조건식1과 조건식2가 모두 거짓이면 이 코드 블록이 실행된다.
}

else if 문과 else 문은 옵션이다. 즉, 사용할 수도 있고 사용하지 않을 수도 있다. if 문과 else 문은 2번 이상 사용할 수 없지만 else if 문은 여러 번 사용할 수 있다.

var num = 2;
var kind;

// if 문
if (num > 0) {
	kind = '양수'; // 음수를 구별할 수 없다
}
console.log(kind); // 양수

// if...else 문
if (num > 0) {
	kind = '양수';
} else {
	kind = '음수'; // 0은 음수가 아니다.
}
console.log(kind); // 양수

// if...else if 문
if (num > 0) {
	kind = '양수';
} else if (num < 0) {
	kind = '음수';
} else {
	kind= '영';
}
console.log(kind); // 양수

만약 코드 블록 내의 문이 하나뿐이라면 중괄호를 생략할 수 있다.

var num = 2;
var kind;

if (num > 0)		kind = '양수';
else if (num < 0)	kind = '음수';
else			kind = '영';

console.log(kind); // 양수

대부분의 if...else 문(표현식이 아닌 문)은 "연산자"에서 살펴본 삼항 조건 연산자로 바꿔 쓸 수 있다. 아래 예제를 살펴보자.

// x가 짝수이면 문자열 '짝수'를 반환하고 홀수이면 문자열 '홀수'를 반환한다.
var x = 2;
var result;

if (x % 2) { // 2 % 2는 0이다. 이때 0은 false로 암묵적 강제 변환된다.
	result = '홀수';
} else {
	result = '짝수';
}

console.log(result); // 짝수

위 예제는 아래와 같이 삼항 조건 연산자(표현식인 문)로 바꿔 쓸 수 있다.

// x가 짝수이면 문자열 '짝수'를 반환하고 홀수이면 문자열 '홀수'를 반환한다.
var x = 2;

// 0은 false로 취급된다.

var result = x % 2 ? '홀수' : '짝수';

console.log(result); // 짝수

위 예제는 두가지 경우의 수('홀수' 또는 '짝수')를 갖는 경우이다. 만약 세가지 경우의 수(양수, 음수, 영)를 갖는 경우는 아래와 같이 바꿔 쓸 수 있다.

var num = 2;

// 0은 false로 취급된다.
var kind = num ? (num > 0 ? '양수' : '음수') : '영';

console.log(kind); // 양수

num > 0 ? '양수' : '음수' 는 표현식이다. 즉, 삼항 연산자는 값으로 평가되는 표현식을 만든다. 하지만 if...else 문은 표현식이 아닌 문이다. 따라서 삼항 조건 연산자 표현식은 값처럼 사용할 수 있기 떄문에 변수에 할당할 수 있다. 하지만 if...else 문은 값처럼 사용할 수 없기 때문에 변수에 할당할 수 없다는 차이가 있다.