안녕하세요. 신기한 연구소입니다.
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문으로 반복문을 만들 수 있게 되었습니다.
이번 포스팅은 여기까지 입니다.
즐 코딩하세요.
'Software > JavaScript' 카테고리의 다른 글
[자바스크립트]label문, break문 그리고 continue문이 루프 반복문에서 어떻게 사용 되는가? (0) | 2022.07.10 |
---|---|
[자바스크립트]do while문 사용하기 편. (루프와 반복) (0) | 2022.06.27 |
[자바스크립트]for..in문과 for..of문 알아보기 편. (루프와 반복) (0) | 2022.06.25 |
[자바스크립트]for문 사용하기 편. (루프와 반복) (0) | 2022.06.22 |
[자바스크립트]switch 문 사용하기 편. (조건문) (0) | 2022.06.19 |