このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。
continue
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
continue 文は、現在のループまたはラベル付きループの現在反復処理中の文の実行を終了し、次の反復処理としてループの実行を続けます。
In this article
試してみましょう
let text = "";for (let i = 0; i < 10; i++) { if (i === 3) { continue; } text = text + i;}console.log(text);// Expected output: "012456789"構文
continue;continue label;label省略可その文のラベルに関連付けられた識別子。
解説
break 文と対照的に、continue はループの実行を完全には終了しません。代わりに、
whileまたはdo...whileループでは、条件式にジャンプします。forループでは、更新式にジャンプします。for...in、for...of、for await...ofループでは、次の反復処理にジャンプします。
continue 文には任意でラベルを含めることができ、現在のループの代わりにラベル付きループ文の次の反復処理へジャンプすることができます。この場合、continue 文は、ラベル付き文の中にある必要があります。
continue 文は、その後にラベルがあるかどうかに関わらず、スクリプト、モジュール、関数の本体、静的初期化ブロックのそれぞれ最上位で使用することはできません。その関数やクラスがさらにループの中に含まれていた場合でもです。
例
>while における continue の使用
次の例では、while ループでi の値が 3 であるときに実行されるcontinue 文を持つものを示しています。よって、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 を返すまで、checkJ は再度反復処理します。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 checkJ; console.log(`${j} is odd.`); } console.log(`i = ${i}`); console.log(`j = ${j}`);}結果:
i: 0// start checkjj: 87 is odd.j: 7j: 65 is odd.j: 5// end checkji = 1j = 4i: 1i = 2j = 4i: 2i = 3j = 4i: 3i = 4j = 4
構文違反の 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 }}仕様書
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-continue-statement> |