Пропускные и продолжающие предложения break и continue ECMAScript

Команды break и continue предоставляют более строгий контроль над выполнением кода в цикле.

Разница между командами break и continue

Команда break позволяет立即 выйти из цикла, предотвращая повторное выполнение любого кода.

Команда continue просто выходит из текущего цикла, позволяя продолжить выполнение следующей итерации по контрольному выражению.

Например:

var iNum = 0;
for (var i=1; i<10; i++) {
  if (i % 5 == 0) {
    break;
  }
  iNum++;
}
alert(iNum); // Вывод "4"

В приведенном выше коде цикл for итерирует переменную i от 1 до 10. В теле цикла условное выражение проверяет,能否 делить i на 5 без остатка. Если это возможно, выполняется команда break. Alert отобразит "4", что означает количество итераций выполнения цикла до выхода.

Если вместо этого примера break использовать команду continue, результат будет отличаться:

var iNum = 0;
for (var i=1; i<10; i++) {
  if (i % 5 == 0) {
    continue;
  }
  iNum++;
}
alert(iNum); // Вывод "8"

Здесь alert отобразит "8", что означает количество итераций выполнения цикла. Общее количество возможных итераций может составлять 9, но когда значение i равно 5, будет выполнено выражение continue, что приведет к пропуску выражения iNum++ и возвращению к началу цикла.

Использование вместе с операторами с меткой

Операторы break и continue можно использовать вместе с операторами с меткой, чтобы вернуться к определенному месту в коде.

Обычно это делается, когда внутри цикла есть еще один цикл, например:

var iNum = 0;
outermost:
for (var i=0; i<10; i++) {
  for (var j=0; j<10; j++) {
    if (i == 5 && j == 5) {
    break outermost;
  }
  iNum++;
  }
}
alert(iNum); // Вывод "55"

В предыдущем примере метка outermost указывает на первый оператор for. В нормальных условиях каждый оператор for выполняет блок кода 10 раз, что означает, что iNum++ будет выполняться 100 раз, и в конце iNum должен быть равен 100. В этом примере оператор break имеет параметр, который указывает на метку, к которой нужно перейти после остановки цикла. Таким образом, оператор break может跳出 не только внутренний цикл for (т.е. использование переменной j), но и внешний цикл for (т.е. использование переменной i). В результате, конечное значение iNum составляет 55, так как когда i и j равны 5, цикл завершается.

Оператор continue можно использовать аналогичным образом:

var iNum = 0;
outermost:
for (var i=0; i<10; i++) {
  for (var j=0; j<10; j++) {
    if (i == 5 && j == 5) {
    continue outermost;
  }
  iNum++;
  }
}
alert(iNum); // Вывод "95"

В предыдущем примере оператор continue заставляет цикл продолжаться, не только внутренний цикл, но и внешний цикл. Когда j равен 5, это означает, что внутренний цикл уменьшится на 5 итераций, что приведет к значению iNum в 95.

Совет:可以看出,операторы с меткой, используемые вместе с break и continue, очень мощные, но их чрезмерное использование может затруднить отладку кода. Убедитесь, что используемые метки имеют описательный характер, и не nesting много уровней циклов.

Совет:Если вы хотите узнать, что такое оператор с меткой, пожалуйста, читайте Теговые предложения ECMAScript Этот раздел.