continue
continue
continue 문은 현재 또는 레이블이 지정된 루프의 현재 반복에서 문들의 실행을 종료하고, 루프의 다음 반복으로 실행을 계속합니다.
출처: continue
본문
continue 문은 현재 또는 레이블이 지정된 루프의 현재 반복에서 문들의 실행을 종료하고, 루프의 다음 반복으로 실행을 계속합니다.
구문 (Syntax)
continue;
continue label;
label: 문의 레이블과 연관된 식별자입니다.
설명 (Description)
break 문과 대조적으로, continue는 루프의 실행을 완전히 종료하지 않고 대신 다음을 수행합니다.
while또는do...while루프에서는 조건으로 다시 점프합니다.for루프에서는 갱신 표현식(update expression)으로 점프합니다.for...in,for...of,for await...of루프에서는 다음 반복으로 점프합니다.
continue 문은 선택적 레이블을 포함할 수 있어, 가장 안쪽 루프 대신 레이블이 지정된 루프 문의 다음 반복으로 프로그램이 점프할 수 있습니다. 이 경우 continue 문은 이 레이블이 지정된 문 안에 중첩되어 있어야 합니다.
continue 문은 레이블이 있든 없든, 함수나 클래스가 루프에 더 포함되어 있더라도 스크립트, 모듈, 함수 본문, 정적 초기화 블록의 최상위 수준에서는 사용할 수 없습니다.
예제: while과 함께 continue 사용하기
다음 예제는 i의 값이 3일 때 실행되는 continue 문을 가진 while 루프를 보여줍니다. 따라서 n은 1, 3, 7, 12 값을 갖게 됩니다.
let i = 0;
let n = 0;
while (i < 5) {
i++;
if (i === 3) {
continue;
}
n += i;
}
예제: 레이블과 함께 continue 사용하기
다음 예제에서 checkIAndJ로 레이블이 지정된 문은 checkJ로 레이블이 지정된 문을 포함합니다. continue를 만나면 프로그램은 checkJ 문의 맨 위에서 계속합니다. continue를 만날 때마다 checkJ는 조건이 false를 반환할 때까지 다시 반복합니다. false가 반환되면 checkIAndJ 문의 나머지가 완료됩니다.
continue에 checkIAndJ 레이블이 있었다면, 프로그램은 checkIAndJ 문의 맨 위에서 계속했을 것입니다.
let i = 0;
let j = 8;
checkIAndJ: while (i < 4) {
console.log(`i: ${i}`);
i += 1;
checkJ: while (j > 4) {
console.log(`j: ${j}`);
j -= 1;
if (j % 2 === 0) continue;
console.log(`${j} is odd.`);
}
console.log(`i = ${i}`);
console.log(`j = ${j}`);
}
예제: 구문적으로 맞지 않는 continue 문
continue는 함수 경계를 가로질러 루프 내에서 사용할 수 없습니다.
for (let i = 0; i < 10; i++) {
(() => {
continue; // SyntaxError: Illegal continue statement: no surrounding iteration statement
})();
}
레이블을 참조할 때, 레이블이 지정된 문이 continue 문을 포함해야 합니다.
label: for (let i = 0; i < 10; i++) {
console.log(i);
}
for (let i = 0; i < 10; i++) {
continue label; // SyntaxError: Undefined label 'label'
}
레이블이 지정된 문은 루프여야 합니다.
label: {
for (let i = 0; i < 10; i++) {
continue label; // SyntaxError: Illegal continue statement: 'label' does not denote an iteration statement
}
}