5.6.2. Инструкция break

We use cookies. Read the Privacy and Cookie Policy

Инструкция break приводит к немедленному выходу из самого внутреннего цикла или инструкции switch. Синтаксис ее прост:

break;

Поскольку инструкция break приводит к выходу из цикла или инструкции switch, такая форма break допустима только внутри этих инструкций.

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

for(var і = 0; і < a.length; i++) {

  if (a[і] == target) break;

}

В языке JavaScript допускается указывать имя метки за ключевым словом break (идентификатор без двоеточия):

break имя_метки;

Когда инструкция break используется с меткой, она выполняет переход в конец именованной инструкции или прекращение ее выполнения. В случае отсутствия инструкции с указанной меткой попытка использовать такую форму инструкций break порождает синтаксическую ошибку. Именованная инструкция не обязана быть циклом или инструкцией switch: инструкция break с меткой может выполнять «выход» из любой вмещающей ее инструкции. Объемлющая инструкция может даже быть простым блоком инструкций, заключенным в фигурные скобки исключительно с целью пометить его.

Между ключевым словом break и именем метки не допускается вставлять символ перевода строки. Дело в том, что интерпретатор JavaScript автоматически вставляет пропущенные точки с запятой: если разбить строку программного кода между ключевым словом break и следующей за ним меткой, интерпретатор предположит, что имелась в виду простая форма этой инструкции без метки, и добавит точку с запятой (раздел 2.5).

Инструкция break с меткой необходима, только когда требуется прервать выполнение инструкции, не являющейся ближайшим объемлющим циклом или инструкцией switch. Следующий фрагмент демонстрирует это:

var matrix = getData(); // Получить 2-мерный массив чисел откуда-нибудь

// Найти сумму всех чисел в матрице,

var sum = 0,

success = false;

// Пометить инструкцию, выполнение которой требуется прервать в случае ошибки

compute_sum: if (matrix) {

  for(var x = 0; x < matrix.length; x++) {

    var row = matrix[x];

    if (!row) break compute_sum;

    for(var у = 0; у < row.length; y++) {

      var cell = row[y];

      if (isNaN(cell)) break compute_sum;

      sum += cell;

    }

  }

  success = true;

}

// Здесь инструкция break выполняет переход. Если будет выполнено условие

// success == false, значит, что-то не так в полученной матрице.

// В противном случае переменная sum будет содержать сумму всех элементов матрицы.

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