while (condition) {
// 코드
// '반복문 본문(body)'이라 불림
}
condition(조건)이 truthy이면 반복문 본문의 코드 실행
아래 반복문은 조건 i < 3 을 만족할 동안 i를 출력
let i = 0;
while (i < 3){
alert( i );
i++;
}
한줄 => 대괄호 {...}
생략 가능
let i = 3;
while ( i ) alert( i-- );
do{
//body
} while (condition);
for( begin ; condition ; step){
// body
}
for( let i = 0; i < 3; i++){
alert(1);
}
구성요소 | ||
---|---|---|
begin | i = 0 | 반복문 진입 단 한번 만 실행 |
condition | i < 3 | 반복마다 해당 조건 확인 false면 멈춤 |
body | alert(i) | condition이 truthy일 동안 계속 실행 |
step | i++ | body가 실행 이후 실행 |
begin -> (condition이 truthy면 -> body -?> step)
for(let i = 0; i < 3; i++){
alert(i); // 0 1 2
}
alert(i); // Error : i is not defined
이렇게 선언한 변수는 반복문 안에서만 접근 할 수 있음.
for(;;){
}
//끊임 없이 body 실행
무한 반복문
let sum = 0;
while (true) {
let value = +prompt("숫자를 입력하세요.",'');
if (!value) break;
sum += value;
}
alert('합계:' + sum);
현재 실행중인 이터레이션을 멈추고 반복문이 다음 이터레이션을 강제로 실행시킵니다(조건을 통과할 때)
현재 반복을 종료시키고 다음 반복으로 넘어가고 싶을 때 사용합니다
홀수출력 예시
for( let i = 0; i <10; i++){
if( i % 2 == 0) continue;
alert(i); // 1,3,5,7,9
}
표현식이 아닌 문법 구조는 삼항 연산자 ?
에 사용할 수 없습니다.
if( i > 5) {
alert(i);
}
else {
continue;
}
(i > 5) ? alert(i) : continue; // x
여러개 의 중첩 반복문을 한번에 빠져나와야 하는 경우
i와j를 반복하며 프롬프트 창에 (0,0)부터 (2,2)까지 구성하는 좌표(i,j)를 입력하게 해주는 예시를 보자
for(let i = 0; i < 3; i++){
for(let j = 0; j < 3; j++){
let input = prompt(`(${i},${j})의 값`, '');
}
}
alert('done!');
사용자가 cancel 버튼을 눌렀을 때 반복문을 중단 시킬 방법을 구하시오.
input
아래 평번한 break
지시자를 사용하면 안쪽만 빠져 나옵니다.
밖쪽 중복문은 빠져 나오지 못합니다. 그래서 이럴때 레이블을 사용할 수 있습니다.
labelName: for(...){
...
}
반복문 안에서 break <labelName>
문을 사용하면 레이블에 해당하는 반복문을 빠져나올 수 있습니다.
outer: for( let i = 0; i < 3; i++){
for(let j = 0; j < 3; j++){
let input = prompt(`(${i},${j})의 값`, '');
if(!input) break outer;
}
}
alert("done!");
원하는 곳으로 점프 기능x
break label;// 아래 for문으로 점프 x
label: for (...)
break
, continue
는 반복문 안에서만 사용 가능하고 레이블은 반드시break
나 continue
지시자 위에 있어야 함.