while과 for 반복문

정세형·2022년 9월 3일
0

javascript

목록 보기
10/30

‘while’문

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 while 반복문

do{
//body
} while (condition);

for 반복문

for( begin ; condition ; step){
 // body 
}
for( let i = 0; i < 3; i++){
	alert(1);
}
구성요소
begini = 0반복문 진입 단 한번 만 실행
conditioni < 3반복마다 해당 조건 확인 false면 멈춤
bodyalert(i)condition이 truthy일 동안 계속 실행
stepi++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 실행

무한 반복문

반복문 빠져나오기(break)

let sum = 0;
while (true) {
 	
  let value = +prompt("숫자를 입력하세요.",'');
  
  if (!value) break;
  
  sum += value;
}


alert('합계:' + sum);

다음 반복으로(continue)

현재 실행중인 이터레이션을 멈추고 반복문이 다음 이터레이션을 강제로 실행시킵니다(조건을 통과할 때)

현재 반복을 종료시키고 다음 반복으로 넘어가고 싶을 때 사용합니다

홀수출력 예시

for( let i = 0; i <10; i++){
 
  if( i % 2 == 0) continue;
  
  alert(i); // 1,3,5,7,9
}

오른쪽엔 break나 continue가 올 수 없음

표현식이 아닌 문법 구조는 삼항 연산자 ?에 사용할 수 없습니다.

if( i > 5) {
 alert(i); 
}
else {
  continue;
}
(i > 5) ? alert(i) : continue; // x

break continue 레이블 만들기

여러개 의 중첩 반복문을 한번에 빠져나와야 하는 경우

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지시자를 사용하면 안쪽만 빠져 나옵니다.
밖쪽 중복문은 빠져 나오지 못합니다. 그래서 이럴때 레이블을 사용할 수 있습니다.

레이블(label)

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는 반복문 안에서만 사용 가능하고 레이블은 반드시breakcontinue지시자 위에 있어야 함.

profile
👨‍💻github.com/pos1504 💌pos1504@gmail.com 🙋‍♂️https://www.linkedin.com/in/%EC%84%B8%ED%98%95-%EC%A0%95-68067b287/

0개의 댓글