[TIL / JavaScript] 조건문과 반복문 (4)

Changyun Go·2021년 7월 24일
0
post-thumbnail

[JavaScript] 반복문의 제어

break 문


  • break 문은 레이블 문, 반복문 또는 switch 문의 코드 블록을 탈출한다.
  • 레이블 문, 반복문, switch 문의 코드 블록 이외에 break 문을 사용하면 SyntaxError(문법 에러)가 발생한다.
  • 반복문을 더 이상 진행하지 않아도 될 때 불필요한 반복을 회피할 수 있어 유용하다.
for(var i = 0; i < 10; i++){
    if(i === 5) {
        break;
    }
    document.write('coding everybody'+i+'<br />');
}  //'coding everybody 4'까지만 출력된다.

i의 값이 5일 때 break 문이 실행되면서 반복문이 완전히 종료된다.

문자열에서 특정 문자의 인덱스(위치)를 검색하는 예제이다.

var string = 'Hello World.';
var index;

// 문자열은 유사배열이므로 for 문으로 순회할 수 있다.
for (var i = 0; i < string.length; i++) {
  // 문자열의 개별 문자가 'l'이면
  if (string[i] === 'l') {
    index = i;
    break; // 반복문을 탈출한다.
  }
}

console.log(index); // 2

// 참고로 String.prototype.indexOf 메소드를 사용해도 같은 동작을 한다.
console.log(string.indexOf('l')); // 2

레이블 문

  • 레이블 문(Label statement)이란 식별자가 붙은 문을 말하며 프로그램의 실행 순서를 제어하기 위해 사용한다.
  • 레이블 문을 탈출하려면 break 문에 레이블 식별자를 지정한다.
// foo라는 식별자가 붙은 레이블 블록문
foo: {
  console.log(1);
  break foo; // foo 레이블 블록문을 탈출한다.
  console.log(2);
}

console.log('Done!');
  • 중첩된 for 문의 내부 for 문에서 break 문을 실행할 때 내부 for 문이 아닌 외부 for 문을 탈출하기 위해 레이블 문을 사용한다.
// outer라는 식별자가 붙은 레이블 for 문
outer: for (var i = 0; i < 3; i++) {
  for (var j = 0; j < 3; j++) {
    // i + j === 3이면 외부 for 문을 탈출한다.
    if (i + j === 3) break outer;
  }
}

console.log('Done!');
  • 레이블 문은 일반적으로 권장하지 않는다. 프로그램의 흐름이 복잡해져서 가독성이 나빠지기 때문이다.

continue 문


  • continue 문은 반복문의 코드 블록 실행을 현 지점에서 중단하고 반복문의 증감식으로 이동한다. → break 문처럼 반복문을 탈출하지 않는다.
for(var i = 0; i < 10; i++){
    if(i === 5) {
        continue;
    }
    document.write('coding everybody'+i+'<br />');
}  // 'coding everybody 5'만 빠지고 'coding everybody 9'까지 출력된다.

i의 값이 5가 되었을 때 실행이 중단 됐기 때문에 continue 이후의 구문이 실행되지 않지만 반복문은 중단되지 않았기 때문에 나머지 결과가 출력된다.

문자열에서 특정 문자의 개수를 카운트하는 예제이다.

// continue 문을 사용하지 않으면 if 문 내에 코드를 작성해야 한다.
for (var i = 0; i < string.length; i++) {
  // 'l'이면 카운트를 증가시킨다.
  if (string[i] === 'l') {
    count++;
    // code
    // code
    // code
  }
}

// continue 문을 사용면 if 문 밖에 코드를 작성할 수 있다.
for (var i = 0; i < string.length; i++) {
  // 'l'이 아니면 카운트를 증가시키지 않는다.
  if (string[i] !== 'l') continue;

  count++;
  // code
  // code
  // code
}
  • if 문 내에서 실행해야 할 코드가 한 줄이라면 continue 문을 사용했을 때보다 간편하며 가독성도 좋지만, if 문 내에서 실행해야 할 코드가 길다면 들여쓰기가 한 단계 더 깊어지므로 continue 문을 사용하는 것이 가독성이 더 좋다.

P.S.

반복문이야말로 코딩의 정수가 아닐까? 이렇게 여러 가지 상황을 염두에 두고 다양한 기능을 만들어 놓은 프로그래밍 언어 개발자들이 참 대단하다😯 앞으로 갈 길이 멀지만 이번 주말에는 앞으로의 목표에 대해 정립해보는 시간을 가져볼까 한다🙃

참고 문서


0개의 댓글

관련 채용 정보