Javascript предоставляет нам несколько способов итерации, включая for, while, do while циклов. Иногда мы можем захотеть выйти из цикла или пропустить какую-то конкретную итерацию. Мы можем сделать все это с помощью следующего: -

Разорвать цикл

Чтобы выйти из текущего цикла, мы используем ключевое слово break. Если мы работаем с while loop или do while loop, цикл завершается, когда условие становится ложным, но мы также можем принудительно выйти из цикла с помощью ключевого слова break.

let counter = 0;
while( true ) {
  if ( counter === 5 ) {
    break;
    console.log('Will not run') // code after break statement does not runs
  }
  counter++;
}

В приведенном выше примере мы инициализируем счетчик значением 0 и заставляем цикл while работать бесконечно, предоставляя истинное значение.

Чтобы выйти из этого бесконечного цикла, мы можем использовать ключевое слово break, которое будет запущено, когда значение счетчика станет равным 5. Кроме того, код, написанный после оператора break, не выполняется.

Аналогичным образом мы можем использовать ключевое слово break с for loop.

Продолжить следующую итерацию

Во время цикла мы можем захотеть пропустить конкретную итерацию на основе некоторого условия и перейти к следующей итерации, тогда это можно сделать с помощью ключевого слова continue. Давайте разберемся в этом больше с помощью примера: -

for ( let i = 1; i <= 5; i++ ) {
  if ( i === 3 ) {
    continue;
  }
  console.log(i)
}
// Output:- 1, 2, 4, 5

Здесь мы хотим пропустить итерацию, когда значение i будет равно 3. Для этого мы использовали ключевое слово continue. Из-за этого код, написанный после ключевого слова continue, не будет выполняться, и цикл начнет повторяться по следующему условию, где i станет 4.

Ярлык для перерыва/продолжения

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

let counter = 0;
while( true ) {
  // Loop1
  
  while( true ) {
    // Loop2
    if ( counter === 5 ) {
      break;
    }
    counter++;
  }  
}

Здесь у нас есть вложенные бесконечные циклы. В Loop2 мы предоставляем некоторое условие, на основе которого будет выполняться оператор break. Это прервет выполнение Loop2, но Loop1 останется выполняться бесконечно.

Поэтому для решения такого рода проблем мы используем labels.

Метка — это не что иное, как идентификатор цикла, который следует следующему синтаксису:

labelName: while () { }

Итак, теперь, используя оператор break labelName, мы можем напрямую выйти из любого именованного цикла. Давайте еще раз взглянем на предыдущий пример, который будет немного изменен, чтобы использовать метки.

let counter = 0;
outer: while( true ) {
  // Loop1

  while( true ) {
    // Loop2
   
    if ( counter === 5 ) {
      break outer;
    }
    counter++;
  }
}

Теперь самому внешнему циклу присваивается идентификатор метки outer, и мы выходим из самого внутреннего цикла с помощью оператора break outer. Это заставит код искать цикл с меткой outer и выходить из этого цикла.