1. while loop의 작동법
2. for loop와 while loop의 차이점
3.
for문과 비교하기 위해서 for문을 작성해두겠다.
for (let rep = 1; rep <= 10; rep++) {
console.log(`Lifting weights repetition ${rep} 🏋`);
}
while문 같은걸 구현해도 동일한 구성 요소가 필요하다. 여전히 counter가 필요하다. 큰솔에 현재 갑을 프린트할 수 있도록 말이다. 언제 멈출지 알고 어떻게든 counter를 증가시킬 수 있는 조건이 필요하다. while문에서는 조건만 지정할 수 있다.
while 그리고 조건만 여기서 지정할 수 있다. 어떻게? 밑에 코드를 참고하길
while (rep <= 10)
while (rep <= 10)
반복이 적거나 같을때 루프를 계속 돌리는 것이다. 그래서 이 루프를 while이라고 부르는 것이다. 위의 조건이 참인 경우에만 실행이 된다.
let rep = 1;
while (rep <= 10) {
console.log(`Lifting weights repetition ${rep} 🏋`);
rep++
}
하지만 지금은 수동으로 for문의 다른 두 컴포넌트를 정의해야 한다. 반복과 counter의 증가를 말이다. 그래서 밖에서 작성해햐 한다. 그런 다음 실행하고자 하는 코드를 입력한다. 그런 다음 반복의 끝에 counter를 증가시킨다. 반복의 끝은 기본적으로 저 코드 블록의 끝이다.
while문이 for문 보다 더욱 다양하게 쓰인다. why? counter가 필요없기때문에
while문에 정말 필요한건 조건이 유지되어야한다. 그래야 계속 실행된다. 그 상태는 어떤 상태든 될 수 있다. counter와 전혀 관계 없다. 때론 문제해결이 되기 위해 꼭 필요한 것이다. counter가 없는 문제나 증가하는 숫자가 없는 것을 보면 말이다.
counter에 의존하지 않는 예
대신 임의 변수에 의존한다.
주사위를 굴려서 6이 나올때까지 계속 굴리면 된다. 6이 나오면 멈추는 것이다.
즉 주사위가 6개일 때와 아닐 때 루프를 돌리면 되는 것이다.
counter변수는 필요가 없다. while 루프의 사용 사례가 바로 그것이다.
먼저 난수를 만들어본다. 주사위 굴리는건 1에서 6사이의 숫자다. 이걸 구현하는 방법은 현재 시점에서는 중요하지 않다.
let dice = Math.trunc(Math.random() * 6) + 1;
while (dice !== 6) {
console.log(`You rolled a ${dice}`);
dice = Math.trunc(Math.random() * 6) + 1;
}
이 주사위가 변수인 6이 쥐어쥘때.. 루프의 조건은 6과 주사위가 다르다는 것이다. 우리가 생성하는 주사위 값은 하나이다. 즉 6과 다르다면 실행될 것이다.
첫번째 무작위 숫자는 3, 두번째는 2 ... 마지막 2 뒤에 6이 나와서 while문은 종료되었다. 루프는 더이상 참이 되지 않아 종료된것이다.
while루프는 어떤 변수에 의존할 필요가 없다. counter 없는 루프가 필요할 때는 while 루프에 손을 뻗는다. 기본적으로 루프가 몇번 반복될 지 미리 알 수 없을 때 발생한다. 그런 상황에서는 while루프가 작업에 맞는 올바른 도구이다.