Search

반응형

'조건문'에 해당되는 글 2건

  1. 2022.06.19 [자바스크립트]switch 문 사용하기 편. (조건문)
  2. 2022.06.12 [자바스크립트]if...else문 사용하기 편. (if 조건문)
반응형

안녕하세요. 신기한 연구소입니다.

저번 포스팅에 이어 자바스크립트의 조건문 중 하나인 switch문에 대해 알아봅니다.

if...else문과 함께 switch문도 자바스크립트에서 조건문으로 사용됩니다.

if...else문이 궁금하다면 이전 포스팅을 확인해보세요.

2022.06.12 - [Software/JavaScript] - [자바스크립트]if...else문 사용하기 편. (if 조건문)

 

[자바스크립트]if...else문 사용하기 편. (if 조건문)

안녕하세요. 신기한 연구소입니다. 이번 포스팅은 자바스크립트에서 조건문을 사용하는 방법을 알아봅니다. 조건문은 if...else 문과 switch 문이 있는데 if...else 문 먼저 알아볼게요. 조건문은 언제

tiboy.tistory.com

사실 switch문은 자바스크립트에만 있는 명령어는 아닙니다.

자바(java), C 심지어 sql에서도 switch문을 사용하고 있습니다.

사용법도 거의 같습니다.

하나만 잘 하면 다른 언어도 쉽게 접근할 수 있다는 말이지요.

그럼 switch문의 구조에 대해 알아볼게요.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
switch(exp){
    case 라벨1:
        구문1;
        break;
    case 라벨1:
        구문1;
        break;
    ...
    default:
        기본구문;
 
switch(exp){
    default:
        기본구문;
    case 라벨1:
        구문1;
        break;
    case 라벨1:
        구문1;
        break;
    ...
 
cs

두 가지 형식으로 구조를 만들었습니다.

다른 점은 default의 위치입니다.

보통은 처음 구조처럼 default를 마지막에 붙이지만

사실 default는 어디에 위치해도 괜찮습니다.

default는 기본으로 실행하는 구문이거든요.

그래서 break;도 포함되지 않습니다.

그럼 위 구문에 대해 설명해보겠습니다.

switch문 옆 괄호 안 exp는 표현식입니다.

이 표현식(expression)을 자바스크립트는 평가합니다.

평가 후 나온 값을 가지고 case문의 라벨 값과 비교하고

같다면 해당 case의 구문(명령문들)을 실행합니다.

결국 exp는 결괏값을 가지고 있어야 한다는 의미로 보입니다.

그리고 그 결괏값이 가지고 case문을 위에서 하나씩 순서대로 찾아다니며

같은지 확인하고 만약 같다면

그 case가 가지고 있는 구문들을 실행해 주는 구조인 것이지요.

그리고 break문을 만나 switch문을 빠져나가게 됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var val = 'a';
 
switch(val) {    
    case 'a':
        console.log('a');
        break;
    case 'b':
        console.log('b');
        console.log(val);
        break;
   default:
        console.log('defalut');
        break;
}
cs

이 예제를 보면 swich문의 표현식은 val이고

해당 식의 결과는 'a'다.

그래서 첫 번째 case문이 'a'로 같기에 해당 구문을 실행하고

break문을 통해 빠져나온다.

만약 default문을 선두에 둔다면 break;문을 빼먹으면 안 된다

위 예제에서 default문이 최 하단에 있기에 사실 break문은 생략해도 된다.

그 뒤로 실행될 구문이 없기 때문이다.

만약 val 값이 'a', 'b' 두 값이 아니면 해당 case문의 값과 일치하지 않기에

default를 실행하게 된다.

 

break문

 

위 예제에 보면 case문의 마지막 위치에 break문이 있다.

case문이 실행되었다면 break문으로 해당 switch문을 종료하겠다는 의미이다.

그런데 사실 break문은 선택이다.

위 예제에서 break문을 뺀다고 해서 오류가 발생하지는 않는다.

하지만 문제가 발생하게 된다.

break문이 없다면 선택된 case문이 실행되고 난 후 switch문이 종료되지 않고

바로 다음 case문으로 이동하게 되고 case문의 값과 비교 절차를 생략한 채

구문만 실행하게 된다.

그렇다면 break문을 안 써야 하는 경우가 있을까?

다음 예제를 살펴본다.

1
2
3
4
5
6
7
8
9
10
11
12
13
var val = '양념치킨';
 
switch(val) {    
    case '후라이드':
        console.log('15,000원');
        break;
    case '양념치킨':
    case '간장치킨':
        console.log('16,000원');
        break;
   default:
        console.log('메뉴없음');
}
cs

치킨집 메뉴 선택 가격 결정 switch문을 만들어봤습니다.

후라이드는 15,000원이고 양념과 간장치킨은 16,000원입니다.

양념과 간장은 가격이 같습니다.

중복해서 구현할 필요 없이 위 예제처럼 break문을 사용하지 않는다면 

다음 case문인 간장치킨의 구문을 같이 사용할 수 있게 됩니다.

 

지금까지 자바스크립트 조건문 중 하나인 switch문에 대해 알아봤습니다.

즐 코딩하세요.

반응형
반응형

안녕하세요. 신기한 연구소입니다.

이번 포스팅은 자바스크립트에서 조건문을 사용하는 방법을 알아봅니다.

조건문은 if...else 문과 switch 문이 있는데 if...else 문 먼저 알아볼게요.

조건문은 언제 사용할까요?

어떤 식이 참인 경우 사용할 수 있습니다. 다른 표현으로 논리 조건이 참인 경우를 말하는데요.

흔히 사용하는 예를 들어볼게요.

웹사이트에 가입할 때 if...else 조건문을 사용할 수 있습니다.

화면에서 입력받은 비밀번호와 제대로 입력했는지 확인하는 재입력한 비밀번호를 비교합니다.

만약 처음 입력한 비밀번호와 확인용으로 입력한 두 번째 비밀번호가 같다면 패스하고

다르면 비밀번호가 다르니 확인하라는 메시지를 보여줄 수 있게 됩니다.

 

if문은 논리 조건이 참인 경우 사용하고 else 문은 거짓이라면 실행할 명령문을 사용할 수 있습니다.

기본 구조를 보겠습니다.

1
2
3
4
5
if (조건) {
    구문1;
}else{
    구문2;
}
cs

if 문 다음에 ( )를 사용해서 조건 (condition)을 설정합니다.

조건은 true나 false 인 논리 조건으로 평가할 수 있다면 어떤 표현식도 사용할 수 있습니다.

조건이 true로 평가된다면 구문1을 실행하게 됩니다.

조건이 false로 평가된다면 구문2를 실행하게 됩니다.

조건이 여러 개인 경우는 else if를 사용하면 됩니다.

기본 구조를 보겠습니다.

1
2
3
4
5
6
7
8
9
10
if (조건1) {
    구문1;
}else if (조건2) {
    구문2;
}else if (조건3) {
    구문3;
...
}else{
    구문n;
}
cs

조건이 여러개 존재한다면 위 예시처럼 사용하면 됩니다.

이 경우 처음 true로 평가되는 if문의 구문을 실행하게 됩니다.

조건 2와 조건 3이 true인 경우 먼저 만나는 조건 2의 구문만 실행하게 됩니다.

1
2
3
4
5
6
7
8
9
if (true){
    console.log('A');
}else if (true){
    console.log('B');
}else if (true){
    console.log('C');
}else{
    console.log('D');
}
cs

위 예시를 보면 조건이 모두 true이고 else문도 존재합니다.

앞서 이야기한 것처럼 가장 먼저 만나는 true문의 구문만 실행한다고 했습니다.

위 예시의 결과는 A만 출력됩니다.

if...else문을 사용할 때 해당 구문은 블록문(중괄호, {})를 사용하지 않으면

단 한 줄만 가능하고 그 이상의 구문이 필요하면 블록문을 사용해야 합니다.

한줄만 사용한다고 해도 가급적 중괄호를 사용하는 게 좋답니다.

true와 false처럼 명확한 참과 거짓이 있는 반면

자바스크립트는 참값, 거짓 값이 존재합니다.

이는 불리언 타입의 true와 false는 아니지만 그렇게 평가되는 값이 있다는 의미입니다.

false, undefined, 0, null, NaN, ""(빈 값)은 자바스크립트에서 falsy로 false로 평가된답니다.

1
2
3
4
5
6
7
var chk;
 
if (chk) {
    console.log("chk");
}else{
    console.log("false");
}
cs

예를 들어볼게요.

변수 chk는 선언은 했지만 할당(초기화)을 하지 않았습니다.

그럼 당연히 undefined로 채워질 겁니다.

undefined는 falsy값으로 false로 평가됩니다.

그래서 조건은 false가 되고 else의 구문이 실행되어 콘솔에 "false"가 출력됩니다.


위 6개의 값이 false로 평가된다고 했습니다.

그래서 객체를 포함, 위 6개를 제외한 다른 모든 값은 조건문에서 true로 평가된다는 것을

명심해야 합니다.

 

마지막으로 Boolean 객체 생성자에 대해 알아볼게요.

다음 예제를 보겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var b = new Boolean(false);
 
if(b) {
    console.log("b is true");
}else{
    console.log("b is false");
}
 
if (b == true) {
    console.log("원시 true값과 같다");
}else{
    console.log("원시 true값과 다르다");
}
 
cs

if(b)는 true일까요?  false일까요?

위에서 설명했듯이 6개의 값 외에는 true로 평가된다고 했습니다.

그래서 1번에서 new를 사용해 객체를 생성했기 때문에 생성자에 false를 넘겼더라도

객체 b는 true로 평가됩니다. 값은 false를 갖고 있겠지요.

true로 평가되었으면 9번 if(b == true)도 true일까요?

9번 라인은 객체 b 자체를 평가했다면 true 겠지만 b의 값이 true와 같은지(==) 평가했고

b 객체의 false로 생성했기 때문에 true와 같은지 비교하면 false가 됩니다. (다르다는 겁니다.)

이 부분을 잘 주의해서 테스트 코딩도 해보길 바랍니다.

 

if문을 작성할 때 가끔 혼동할 때가 있는데

바로 if (조건)을 a = b와 같이 할당 문으로 지정하는 경우가 있습니다.

a = b가 아닌 a == b로 사용해야 합니다.

지금까지 자바스크립트의 if...else문에 대해 알아봤습니다.

 

즐 코딩하세요.

반응형