2012-05-06 11 views
41

私は終了したいループを持っています。このように:javascriptは返さずにループを終了します

function MyFunction() { 

    for (var i = 0; i < SomeCondition; i++) { 

    if (i === SomeOtherCondition) { 

     // Do some work here 
     return false; 
    } 
    } 

    SomeOtherFunction(); 
    SomeOtherFunction2(); 
} 

問題はDo some work here文を実行した後、私はforループを終了したいが、まだ復帰虚偽の陳述は、forループを終了していますが、それはまた出てSomeOtherFunctions();

を実行することです全体の機能。これをどうやって解決するのですか?

ありがとうございました。

+2

可能重複(http://stackoverflow.com/questions/9830650/how-to-stop-a-for -loop) –

+1

これは、基本的なJavaScriptチュートリアルの初期の章で学ぶ種類のものです。言語の基礎を学ぶには、http://eloquentjavascript.netのようなものを検討してください。その[第2章](http://eloquentjavascript.net/chapter2.html)は 'break'ステートメントを教えています。 –

答えて

81

あなたはbreak statementを探しています。

+1

とjavascriptのリンク:http://www.w3schools.com/js/js_breakasp – Sietse

+0

ああokkkk、答えに感謝します。 – frenchie

+0

なぜC#の例を参照していますか? – ilanco

4

ブレーク - ループ全体をブレークします。 続行 - ループ内のステップをスキップします。したがって、以下のコードをスキップします。

9

ブレークを使用するか、文

function MyFunction() { 
    for (var i = 0; i < SomeCondition; i++) { 

    if (i === SomeOtherCondition) { 

     // Do some work here 
     break; 
    } 
    } 

    SomeOtherFunction(); 
    SomeOtherFunction2(); 
} 

もしくは状態のもののために

function MyFunction() { 
    for (var i = 0; i < SomeCondition; i++) { 

    if (i != SomeOtherCondition) continue; 

    // Do some work here 
    } 

    SomeOtherFunction(); 
    SomeOtherFunction2(); 
} 
7

いくつかの人々がソリューションとしてbreakを提供している、そしてそれは確かにある以外の項目の処理を継続するための継続のどちらか質問に対する最良の答え。

しかし、単に完全を期すため、私はまた、閉鎖機能にif()条件の内容をラップすることによって、return声明を維持しながら、質問に答えることができることを追加する必要を感じる。私として

function MyFunction() { 

    for (var i = 0; i < SomeCondition; i++) { 

    if (i === SomeOtherCondition) { 
     function() { 
      // Do some work here 
      return false; 
     }(); 
    } 
    } 

    SomeOtherFunction(); 
    SomeOtherFunction2(); 
} 

を例えば、breakはおそらくこの場合、より良い解決策でしょう。質問への直接的な答えであり、クロージャーはいくつかの追加要因(例えば、thisの値の変更、関数内に導入された変数の範囲の制限など)を導入します。しかし、それはソリューションとして提供する価値があります。なぜなら、この特定の機会に必ずしも将来的には必ずしも使用されるとは限らないが、学ぶための貴重なテクニックだからです。

+0

よろしくお願いいたします。私の考えは、私のコードをシンプルに保つことで、将来的には保守が容易になるようにすることです。他の人がこの方向を望んでいる場合には上書きされます。 – frenchie

+0

@frenchie - あなたは絶対に正しいです。それは間違いなく最高の哲学です。この場合、 'break 'は正しい答えです。クロージャーは非常に強力で、多くの用途があります(ほとんどのjQueryコードはそれらに基づいて構築されています)。しかし、このケースは使いにくいです。 – Spudley

1

i変数をsomecondition値に設定するとよいでしょうか?

for (var i=0; i<SomeCondition; i++) { 

    if (data[i]===true) { 
    //do stuff 
    i=SomeCondition; 
    } 
} 
1

はOK多分これは古い話題ですが、それは誰も代わりにwhileループを使用して提案していないということである、なぜすべての答えを読んだ後、私は思ったんだけど?

JavaScriptでは、forループを破ることができます(他の多くの言語ではできませんが、悪い習慣と見なされます)が、ループを繰り返したい状況でのみ使用します一定の時間。

これが私の提案のようになります。[?forループを停止する方法]の

function MyFunction() { 

    var i = 0, 
     breakLoop = false; 

    while (i < SomeCondition && !breakLoop) { 

    if (i === SomeOtherCondition) { 
     breakLoop = true; 
    } 

    i++; 

    } 

    SomeOtherFunction(); 
    SomeOtherFunction2(); 

} 
関連する問題