Forループから抜け出すために使用する必要があるコマンドは、//code inside
から直接//code after
にジャンプする
//code before
for(var a in b)
{
switch(something)
{
case something:
{
//code inside
break;
}
}
}
//code after
残念ながら、JavaScriptは複数のレベルでbreak
ingを許可していません。これを行う最も簡単な方法は、無名関数を作成してreturn
ステートメントの機能を活用することです。
//code before
(function () {
for (var a in b) {
switch (something) {
case something:
{
//code inside
return;
}
}
}
}());
//code after
これが機能するのは、return
が関数を終了し、したがって暗黙的にループが終了して、code after
に直接移動するためです。
終了する必要があるときにフラグを設定するには、別の変数を使用します。
var b = { firstName: 'Peter', lastName: 'Smith' };
var keepGoing = true;
for (var a in b) {
switch (true) {
case 1:
keepGoing = false;
break;
}
if (!keepGoing) break;
console.log('switch end');
}
console.log('for end');
label
を使用できます。ラベルの付いたステートメントを用意し、そのラベルに違反します。 outerLoop
は、ここで使用したラベルです。
//code before
outerLoop:
for (var a in b) {
switch (something) {
case 'case1':
//code inside
break outerLoop;
}
}
//code after
それはあなたが何を達成したいかに依存します...私が一般的に行うことの一つはこのようなものです:
//code before
for(var a in b)
{
var breakFor = false;
switch(something)
{
case something:
{
//code inside
breakFor = true;
break;
}
}
if (breakFor)
break;
}
//code after
どのループ/スイッチを解除するかがわかります。
function foo ()
{
dance:
for(var k = 0; k < 4; k++){
for(var m = 0; m < 4; m++){
if(m == 2){
break dance;
}
}
}
}
この答え を参照してください。
for(var i=0; i<b.length; i++) {
switch (something) {
case 'something1':
i=b.length;
}
}
反復変数i
がループの終わりに到達すると、それは壊れます。しかし、反復変数を強制的にループの終わりに到達させることができます。
私は常に、条件付きステートメントを使用することは、少なくとも概念的には、コードフローを制御する最も簡単な方法の1つであると考えています。
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