2016-11-24 23 views
0

私はこのようなjavascript関数を書いています。しかしcretain条件が機能を満たしたときに私がしたい、それが壊れるとstatus.Myコードのような真偽あなたはforループ内で条件を破る必要がある。この再帰関数を破り、JavaScriptで値を返す

var ActionAttributes = function (data) 
    { 
     var status = true; 
     var attrKey = data.AttributeKey(); 
     //Condition to exit 
     if (attrKey==''||attrKey==null) 
     { 
      status = false; 
      return false; 
     } 
     for (var i = 0; i < data.Children().length; i++) 
     { 
      var childData = data.Children()[i]; 
      ActionAttributes(childData); 
     } 
     return status; 
    } 
+0

今は数回それを読んで、あなたの求めるものを手に入れないでください。明確にすることはできますか? – Liam

+0

'return ActionAttributes(childData);'、 'ActionAttributes(childData)'ステートメントでブレーク条件が必要です – Satpal

答えて

2

のようなものです返すことを意味します実行されません。あなたはそれを呼び出すだけで、返されたstatusを処理します。

var ActionAttributes = function(data) { 
    var status = true; 
    var attrKey = data.AttributeKey(); 
    //Condition to exit 
    if (attrKey == '' || attrKey == null) { 
     status = false; 
     return false; 
    } 

    for (var i = 0; i < data.Children().length; i++) { 
     var childData = data.Children()[i]; 

     //You need to break loop here 
     //Add appropriate condition here 
     if (ActionAttributes(childData) == false) { 
      return false; 
     } 
    } 

    return status; 
} 
0

よく、その再帰はあまり役に立ちません。

ループ内でActionAttributesの再帰を呼び出しますが、返されるステータスは決して処理しません。最初の呼び出し元は、終了条件が最初のオブジェクトで満たされない限り、常にtrueを受け取ります。

あなたはActionAttributesからの戻り値をステータスに格納し、それがfalseになるとすぐにループから抜け出します。