10

これは、ネストされたループまたは他のコントロールや関数に適用できるエスケープ(returnまたはexit)の数を理解するための理論的な質問です。

私はコードで立ち往生しているのでこれについて混乱しました forから脱出する方法...各ループとメソッドを同時に?

要素option内のsの反復を停止できません。select

私はすでに試しましたがreturnreturn false失敗しました。

一般的にどのようにそれを行うことができますか?

function() {
    for (...) {
        if (...) {
            $(...).each(function() {
               // You have to exit outer function from here
            });
        }
    }
}
4

5 に答える 5

9

ループ間で共有変数を使用します。true終了する場合はeach()ループの最後に、for-loopチェックの最後にそれがであるかどうかを確認しtrueます。はいの場合、それから抜け出します。

于 2013-03-25T12:53:30.790 に答える
4

私はそれをこのようにします:

  • ブール変数を作成して各ループをチェックし、変数がtrueの場合は、ループを終了します(それぞれに対してこれを実行します)。

    var exitLoop = false;
    
     $(sentences).each(function() {
        if(exitLoop) {return;}
        var s = this;
        alert(s);
        $(words).each(function(i) {
        if(exitLoop) {return;}
            if (s.indexOf(this) > -1)
            {
                alert('found ' + this);
                throw "Exit Error";
            }
        });
    });
    

これはaの正しい使用法ではないことに注意してください。これは、コードのさまざまなセクションにジャンプするのではなく、エラー処理に厳密に使用する必要があるためです。ただし、実行していることには機能しますtry-catchtry-catch

returnうまくいかない場合は、try-catch

try{
$(sentences).each(function() {
    var s = this;
    alert(s);
    $(words).each(function(i) {
        if (s.indexOf(this) > -1)
        {
            alert('found ' + this);
            throw "Exit Error";
        }
    });
});
}
catch (e)
{
    alert(e)
}

この回答から取得したコード

于 2013-03-25T12:52:31.840 に答える
1

イテレータ値を変更してループを終了することもできます。

var arr = [1,2,3,4,5,6,7,8,9,10];

for(var i = 0;i<arr.length;i++){

  console.log(i);
  compute(i);

  function compute(num){
    //break is illegal here
    //return ends only compute function
    if(num>=3) i=arr.length;
  }

}
于 2017-11-10T12:29:38.997 に答える
0

「ラベル」は、ループの切断などのスコーププロセスのソリューションです。これが私が何年も後に実現した組み込みの答えです:https ://css-tricks.com/you-can-label-a-javascript-if-statement/

于 2021-05-21T05:09:21.013 に答える
-1

ほとんどの言語と同じように。ループを終了するためのキーワードは次のとおりですbreak; 。詳細はこちら: http ://www.w3schools.com/js/js_break.asp

于 2013-03-25T12:51:27.597 に答える