continue
Baseline Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Оператор continue прерывает выполнение операторов в текущей итерации текущего или помеченного цикла и продолжает выполнение цикла со следующей итерации.
Попробуйте
let text = "";
for (let i = 0; i < 10; i++) {
if (i === 3) {
continue;
}
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, с последующей меткой или без нее, не может использоваться на верхнем уровне скрипта, модуля, тела функции или блока статической инициализации, даже если функция или класс далее содержатся в цикле.
Примеры
Использование continue с while
Следующий пример демонстрирует цикл while, который имеет оператор continue, выполняющийся, когда значение i равно 3. Таким образом, 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, выполняется оставшаяся часть оператора 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}`);
}
Вывод:
i: 0 // start checkJ j: 8 7 is odd. j: 7 j: 6 5 is odd. j: 5 // end checkJ i = 1 j = 4 i: 1 i = 2 j = 4 i: 2 i = 3 j = 4 i: 3 i = 4 j = 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
}
}
Спецификации
Совместимость с браузерами
| Desktop | Mobile | Server | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
continue |
1 |
12 |
1 |
4 |
1 |
18 |
4 |
10.1 |
1 |
1.0 |
4.4 |
1 |
1.0.0 |
1.0 |
0.10.0 |
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/continue