[javascript]자바스크립트 while과 반복문

rondido·2022년 8월 29일
0

Javascript

목록 보기
8/21

while과 for 반복문

  • 개발을 하다 보면 여러 동작을 반복해야 하는 경우가 종종 생깁니다.
    상품 목록에서 상품을 차례대로 출력하거나 숫자를 1부터 10까지 하나씩 증가시키면서 동일한 코드를 반복 실행해야 하는 경우같이 말이죠.
    반복문을 사용하면 동일한 코드를 여러 번 반복할 수 있다.

while (condition) {
  // 코드
  // '반복문 본문(body)'이라 불림
}
  • condition이 truthy이면 반복문 본문의 코드가 반복적 으로 실행

let i =3;
while(i){
 	console.log(i);
    i--;
}

do ...while 반복문

  • do..while문법을 사용하면 condition을 반복문 본문 아래로 옮길 수 있다.

do{
//반복문 본문
}while(condition);
  • 이때 본문이 먼저 실행되고, 조건을 확인한 후 조건이 truthy인 동안엔 본문이 계속 실행

  • do..while 문법은 조건이 truthy 인지 아닌지에 상관없이, 본문을 최소한 한 번이라도 실행하고 싶을 때만 사용해야 합니다. 대다수의 상황에선 do..while보다 while(…) {…}이 적합합니다.


for 반복문

  • for반복문은 while 반복문보다는 복잡하지만 가장 많이 쓰이는 반복문
for(begin; condition; step;){
//반복문 본문
}

for (let i = 0; i < 3; i++) { // 0, 1, 2가 출력됩니다.
  console.log(i);
}


  • 인라인 변수 선언
    • 지금까지 '카운터' 변수 i를 반복문 안에서 선안하였습니다. 이런 방식을 '인라인'변수 선언이라고 부름
    • 이렇게 선언한 변수는 반복문 안에서만 접근 가능

for (let i = 0; i < 3; i++) {
  console.log(i); // 0, 1, 2
}
console.log(i); //Unexpected identifier

반복문 빠져나오기

  • 대개는 반복문의 조건이 falsy가 되면 반복문 종료
  • 그런데 특별한 지시자인 break를 사용하면 언제든지 원하는 때에 반복문에서 빠져 나올 수 있음

let sum = 0;

while (true) {

  let value = +prompt("숫자를 입력하세요.", '');

  if (!value) break; // (*)

  sum += value;

}
alert( '합계: ' + sum );

다음 반복으로 넘어가기

  • continue 지시자는 break의 '가벼운 버전'입니다. continue는 전체 반복문을 멈추지 않는다. 대신에 현재 실행중인 이터레이션을 멈추고 반복문이 다음 이터레션을 강제로 실행 시킴(조건이 통과 할때)

for (let i = 0; i < 10; i++) {
  //조건이 참이라면 남아있는 본문은 실행되지 않습니다.
  if (i % 2 == 0) continue;
  console.log(i); // 1 3 5 7 9 출력
}
  • 주의 할 점
    • '?' 오른쪽엔 break나 continue가 올 수 없다
    • 표현식이 아닌 문법 구조는 삼항 연산자 ?에 사용할 수 없다는 점을 항상 유의하시기 바랍니다.
    • 특히 break나 continue 같은 지시자는 삼항 연산자에 사용하면 안됩니다.

break/continue와 레이블


outer: for (let i = 0; i < 3; i++) {

  for (let j = 0; j < 3; j++) {

    let input = prompt(`(${i},${j})의 값`, '');

    // 사용자가 아무것도 입력하지 않거나 Cancel 버튼을 누르면 두 반복문 모두를 빠져나옵니다.
    if (!input) break outer; // (*)

    // 입력받은 값을 가지고 무언가를 함
  }
}
alert('완료!');


  • 위 예시에서 break outer는 outer라는 레이블이 붙은 반복문을 찾고, 해당 반복문을 빠져나오게 해줍니다.
  • 따라서 제어 흐림이 (*)에서 alert('완료!')로 바로 바뀝니다.

  • 레이블은 마음대로 '점프'할 수 있게 해주지 않습니다.
    • 레이블을 사용한다고 해서 원하는 곳으로 마음대로 점프할 수 없다
    • 아래 예시 처럼 레이블을 사용하는 것은 불가능

break label; // 아래 for 문으로 점프할 수 없습니다.

label: for (...)
  • break와 continue는 반복문 안에서만 사용할 수 있고, 레이블은 반드시 break이나 continue 지시자 위에 있어야합니다.

위 내용은 javascript.info 사이트에서 공부한 내용 정리
자세한 내용은 아래 링크 참고 하세요
https://ko.javascript.info/while-for

profile
개발 옆차기

0개의 댓글