Мой вопрос: Как я могу вызвать break;
или continue;
для цикла через функцию, которая вызывается? Дело в том, что я не хочу вставлять все возможные условия в цикл, чтобы избежать сложности кода. Я думал о какой-то псевдо например:Перерыв или продолжение цикла в функциональных вызовах
var someObjects = [...] //array with some js objects
for (var i = 0; i < someObjects.length; i++) {
var element = someObjects[i];
doSomething(element);
}
function doSomething(object) {
//some code here
if (somethingIsDefined) {
doSomethingElse(object);
}
}
function doSomethingElse(anotherObject) {
//some more code here
if (somethingMatches) {
//here i would like to break the most upper loop
}
}
//someObjects will be processed
Я знаю, что можно было бы ввести, например, логическую переменную и проверить внутри цикла, если он является истинным или ложным, и в зависимости от того, break;
или continue;
.
Но это - даже если это всего лишь одна строка - увеличит вложенность. Вы видите возможные решения?
Вы можете установить глобальное логическое значение, равное ложные, установите его равным верно в вашей функции, и проверить каждую итерацию если логическое значение истинно. – AppleCrazy
вы можете попробовать переместить итератор за пределы цикла for, а когда 'somethingMatches', установите для' someObjects.length' так, чтобы он выходил из цикла. (Просто мысль, никогда не делала этого) – gkb
@AppleCrazy Точно , но, как я уже говорил, увеличит вложенность внутри цикла for. Я знаю, что могу это сделать, но я хотел спросить, есть ли способ избежать гнездования. – bash0ne