Перерыв для цикла изнутри корпуса коммутатора в Javascript
Какую команду я должен использовать, чтобы выйти из цикла for, также из //code inside
перейти непосредственно к //code after
//code before
for(var a in b)
{
switch(something)
{
case something:
{
//code inside
break;
}
}
}
//code after
Ответы
Ответ 1
К сожалению, Javascript не разрешает break
через несколько уровней. Самый простой способ сделать это - использовать силу оператора return
, создав анонимную функцию:
//code before
(function () {
for (var a in b) {
switch (something) {
case something:
{
//code inside
return;
}
}
}
}());
//code after
Это работает, потому что return
оставляет функцию и поэтому неявно покидает цикл, перемещая вас прямо к code after
Ответ 2
используйте другую переменную, чтобы указать, когда вам нужно выйти:
var keepGoing = true;
for (var a in b){
switch (something){
case something:
keepGoing = false;
break;
}
if (!keepGoing) break;
}
пример
Ответ 3
Вы можете использовать label
. Подпишите ярлык и перейдите на этот ярлык. outerLoop
- это метка, которую я использовал здесь.
//code before
outerLoop:
for (var a in b) {
switch (something) {
case 'case1':
//code inside
break outerLoop;
}
}
//code after
Ответ 4
это зависит от того, что вы хотите выполнить... одна вещь, которую я обычно делаю, это что-то вроде этого:
//code before
for(var a in b)
{
var breakFor = false;
switch(something)
{
case something:
{
//code inside
breakFor = true;
break;
}
}
if (breakFor)
break;
}
//code after
Ответ 5
Вы можете определить, какой цикл/переключатель нужно сломать.
function foo ()
{
dance:
for(var k = 0; k < 4; k++){
for(var m = 0; m < 4; m++){
if(m == 2){
break dance;
}
}
}
}
См. этот ответ.
Ответ 6
Я всегда нахожу использование условных операторов одним из самых простых способов управления потоком кода, по крайней мере концептуально.
var done = false;
//code before for loop
for(var a in b){
switch(switchParameter){
case firstCase:
//code inside
done = true;
break;
}
}
if(done)
break;
}
//code outside of for loop
Ответ 7
for(var i=0; i<b.length; i++) {
switch (something) {
case 'something1':
i=b.length;
}
}
Когда переменная итерации i
достигает конца цикла, она прерывается. Но можно заставить переменную итерации достигать конца цикла.