반응형

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

for문에 이어 또 다른 반복문 while문에 대해 알아볼게요.

while문은 for문과 달리 정말 심플하게 생겼습니다.

1
2
3
while(조건) {
  구문;
}
cs

달랑 조건만 있네요.

조건이 참이면 while문의 블록문을 계속 실행하게 됩니다.

반대로 거짓이라면 while문 안의 구문 실행을 멈추고 블록문을 벗어나고

다음 구문을 실행하게 됩니다.

{} 블록문이 필수는 아니지만 2줄 이상의 구문을 사용하거나

또는 한 줄이라도 가독성을 높이기 위해 { }를 사용합니다.

무슨 의미일까요?

while문 뒤 (조건) 이 부분이 중요한데요.

조건을 평가하면 true나 false 또는 그 값을 대신할 수 있는 조건이 오면 된다는 의미입니다.

예를 들어 살펴볼게요.

먼저 평가값이 true나 false라고 했으니 직접 그 값을 넣어볼 수 있겠네요.

아래처럼요.

while(true)

이 구문의 의미는 그냥 계속 반복해라~입니다. 무한루프라고 한답니다.

while(false)

이 구문은 아예 반복을 안 하겠네요.

while(a < 3)

변수 a값이 3보다 작은 상태면 true가 되어 계속 반복하고 

3과 같거나 크면 while문을 종료하게 된답니다.

1
2
3
4
5
6
7
var a = 0, b = 0;
 
while (a < 3 && b < 4) {
    a++;
    b++;
    console.log('a=>' + a + ' b=>' + b);
}
cs

이 경우는 && 연산사를 사용했습니다.

둘 다 true인 경우만 실행이 됩니다.

console.log는 3까지는 증가하고 로그를 보여주기 때문에

결과는 a=>3 b=>3까지 출력하고 a < 3에서 false가 돼서 while문을 빠져나옵니다.

예상대로 || 연산자로 변경해서 테스트해봅니다.

1
2
3
4
5
6
7
var a = 0, b = 0;
 
while (a < 3 || b < 4) {
    a++;
    b++;
    console.log('a=>' + a + ' b=>' + b);
}
cs

결과는 a=>4 b=>4까지 출력하고 a < 4 와 b < 4에서 

둘 다 false가 돼서 while문을 빠져나옵니다.

|| 연산자는 첫 비교문이 true면 뒤 비교문을 실행하지 않고

첫 비교문에 false이면 뒤 비교문을 실행합니다.

이때 ||연산자는 둘 다 true이거나 둘 중 하나만 true면 

평가는 true가 된다는 특징이 있습니다.

결국 둘 다 false가 돼야 false로 평가돼서 while문을 벗어날 수 있다는 의미입니다.

어떤 응답 값을 받을 때까지 기다렸다가 

값을 받게 되면 다음 구문을 실행하고 싶은 경우가 있을 겁니다.

엄마 올 때까지 여기서 기다리고 있어.

1
2
3
4
5
6
7
8
//엄마기다리기 while문
while(true) {
  if (엄마 옴?) {
    break;
  }else{
    기다려!
  }
}
cs

이 구문을 이해하셨나요?

우선 반복적으로 엄마가 왔는지 확인을 합니다.

그래서 while문을 사용했고

기다리다가 엄마가 오면 break문으로 while을 빠져나오면서

기다림을 그만하게 됩니다.

1
2
3
4
5
6
7
var selectedMenu = {menu : 'Americano',
        shot : 3,
        size : 'small',
        price : 4000};
while(selectedMenu){
    selectedMenu = {};
}
cs

어떤 결과가 나올까요?

selectedMenu 객체가 리터럴로 초기 할당이 되었기에 true가 되어

while문이 실행된답니다.

하지만 실행 구문을 보면 selectedMenu를 빈 값 {}으로 변경했습니다.

빈 값과 null은 다르답니다.

빈 값으로 할당이 된 것이기에 true가 되어 무한루프가 실행된답니다.

그럼 어떻게 하면 빠져나올 수 있을까요?

바로 null로 할당하면 된답니다.

selectedMenu = null;

 

이렇게 while문은 () 안의 조건을 평가해서 true값이 나오면 

while 블럭문 { } 내의 구문들을 실행합니다.

false가 될 때 까지요.

지금까지 while문에 대해 알아봤습니다.

이제 실전에서 while문으로 반복문을 만들 수 있게 되었습니다.

이번 포스팅은 여기까지 입니다.

즐 코딩하세요.

반응형