Search

반응형

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

  1. 2022.06.12 [자바스크립트]if...else문 사용하기 편. (if 조건문)
  2. 2020.06.27 [영문법]if 혼합가정법, 혼합조건문, Mixed conditional 3가지 타입, if 가정법
반응형

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

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

조건문은 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문에 대해 알아봤습니다.

 

즐 코딩하세요.

반응형
반응형

이번에 설명할 if 조건문(가정법)

혼합가정법(혼합조건문)입니다.

읽어보시고

다음 이야기가 기대되시면

구독과 좋아요 부탁드려요.

두 개의 다른 시간의 문장

하나의 문장으로 나타내는데

기본적으로 0번째 조건문(zero conditional)

일반적인 사실을 기반으로 하는 조건문이고,

1번째 조건문(first conditional)

현재 상황에 대한 조건문이며,

2번째 조건문(second conditional)

현재와 반대되는 또는 불가능한 상황에 대한 조건문이며,

3번째 조건문(third conditional)

과거의 상황에 대한 조건문입니다.

 

2020/06/25 - [Education/English(영어)] - [영문법]가정법, if 조건문(if conditional) 4가지 타입 이해하기 편.

 

[영문법]가정법, if 조건문(if conditional) 4가지 타입 이해하기 편.

만약 내가 중학생으로 돌아간다면, 이런 상상 많이 해보셨죠? 이렇게 불가능한 일을 상상하거나, 예전 일을 후회하거나, 조건에 의한 앞으로의 의도나 의지를 표현하고 싶을 때 사용하는 "IF" 에

tiboy.tistory.com

 

혼합조건문(혼합가정문)은 위 4가지의 구조가 아닌

시간의 조건을 다양하게 사용할 수 있는 구조입니다.

여기서 주의할 점

시간을 다양하게 사용하는 부분이지

동사의 시제와 혼동하면 안 된다는 겁니다.

시간과 시제는 같은 의미가 아닙니다.

I ate an apple when I visited his house.

I was eating an apple when you called yesterday.

이 두 문장을 보면 시제는 다릅니다.

과거 시제와 과거진행시제입니다.

하지만 시간적으로는 그냥 과거로 같습니다.

이 부분을 설명하는 이유는 조건문이

시제는 과거지만

현재의 상태를 표현하기 때문입니다.

If I were you, I would take it.

여기서 조건문의 시제는

were로 과거 시제입니다.

하지만 의미적으로 시간

현재에 대한 이야기를 하는 겁니다.

내가 만약 너라면~ 이렇게요.

이제 시간과 시제에 대해 이해되셨나요?

 

혼합가정문(혼합조건문)은 시제가 아닌

시간이 다른 조건부와 결과부를 구성한다고 보면 됩니다.

3가지 타입으로 예문을 통해 살펴보겠습니다.

 

1번째 혼합타입은 과거-현재 입니다.

If I had finished my homework last week, I would be free now.

만약 내가 지난주에 내 숙제를 끝마쳤었다면(과거),

나는 지금 자유일텐데..(현재)

이 문장의 시간을 보면 앞의 조건문은 과거입니다.

그리고 결과 문은 현재입니다.

원래는 I would have been free.가

3번째 조건문으로 과거 시간으로 맞는 건데,

혼합에서는 현재시간으로 표현해서

과거에 숙제를 이미 마쳤다면(완료),

지금은 편하게 쉬고 있을 텐데..

라는 의미가 됩니다.

차이점은,

과거-과거로 문장을 만들면

과거에 숙제를 이미 마쳤다면(완료),

과거에 편하게 쉬고 있었을 텐데(완료)가 되며

그냥 옛날이야기를 하는 거고,

과거-현재가 되면

과거에 이미 숙제를 마쳤다면,

지금 이렇게 힘들지 않고 편하게 쉬고 있을 텐데(현재)가 되며

과거의 일로 현재 심정을 말하는 구조가 되는 겁니다.

방금 설명은 과거 조건에 현재 결과의 문장입니다.

 

2번째 혼합타입은 현재-과거 입니다.

현재 조건에 과거 결과의 문장도 가능합니다.

If I were you, I would have eaten that food yesterday.

만약 내가 너라면(현재),

어제 그 음식을 먹었었을 텐데(과거)

내가 너라면

과거의 그때 그렇게 했었었을 거라는

사실과 반대되는 상황이나

불가능한 상황을 설명하는 경우

사용합니다.

내가 너라면 그때 그렇게 했었을 거다.

이런 의미라 생각하시면 됩니다.

 

3번째 혼합타입은 미래-과거 입니다.

미래의 조건에 대한 과거의 결과 문도 가능합니다. 

If I had a plan tomorrow, I wouldn’t have had a drink yesterday.

만약 내가 내일 약속이 있다면, (미래)

어제 술을 마시지 않았었겠지(과거)

이 문장은 조건절이 미래입니다.

내일이 회사 창립일로 쉬는 거라면

어제 휴가를 쓰지 않았었겠지.

이런 느낌 아닐까요?

 

지금까지 가정법(if 조건문, 혼합가정법)에

대해 설명했습니다.

쉽게 이해가 되셨나요?

 

감사합니다.

반응형