Какая разница между разрывом с меткой и без метки в 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 шагов.
Когда вы помещаете ярлык, переходите к "уровню" метки, поэтому пропуски двух циклов пропускаются.
Ответ 2
Без метки, break
выйдет из внутреннего цикла. С помощью метки вы можете остановить выполнение вложенных циклов.
См. примеры:
https://developer.mozilla.org/en/JavaScript/Reference/Statements/label
Ответ 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".