Какая разница между разрывом с меткой и без метки в javascript

var num = 0;
for(var i = 0; i < 10; i++){
  for(var j = 0; j < 10 ; j++){
    if(i == 5 && j == 5){
      break;
    }
    num++;
  }
}

console.log(num)

Ответы

Ответ 1

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

Когда вы помещаете ярлык, переходите к "уровню" метки, поэтому пропуски двух циклов пропускаются.

Ответ 3

Использование break без метки разбивает самый внутренний цикл, который в настоящее время выполняется.

Использование break с меткой foo разбивает оператор с надписью foo.

MDN break docs:

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

Ответ 4

разрыв предоставляется только для внутреннего цикла. поэтому он прерывает только внутренний цикл, когда я = j = 5. но внешний цикл продолжает вращаться в 10 раз. поэтому, когда я = j = 5, цикл будет вращаться только 5 раз, а в остальных случаях он будет вращаться 10 раз.

Ответ 5

когда вы используете разрыв без метки, он разбивает только внутренний цикл, который равен (i = 5 j = 6), (i = 5 j = 7), (i = 5 j = 8), (i = 5 j = 9), и цикл снова начинается с (i = 6 j = 0) до (i = 9 j = 9), а также count (num ++) startsthats, почему он показывает результат как 95.

bt, когда вы используете break с ярлыком i.e. break outermost, он вырывается из метки цикла как внешний (т.е. внешний цикл), вот почему6 он дает результат как 55

Ответ 6

Первый из них только разбивает ваш цикл "j". После его прерывания он возвращается в ваш цикл "i" и увеличивает "i" до 6. Когда "i" равно 6, он возвращается в цикл "j", и условие if больше не выполняется. Таким образом, он продолжает складывать "num".