2016-11-24 55 views
0

我已經寫了一個像這樣的javascript函數。但我想,當一個cretain條件滿足功能將不執行意味着它會打破和像status.My代碼是這樣的從遞歸函數中斷開並返回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

'返回ActionAttributes(childData);',您需要在語句'ActionAttributes(childData) – Satpal

回答

2

您需要在for迴路斷線狀態返回真假。你只是調用它,處理返回的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的遞歸,但從不處理返回的狀態。所以第一個調用者總是會得到真實的,除非退出條件符合第一個對象。

您將ActionAttributes的返回值存儲到狀態中,然後一旦出現錯誤就立即跳出循環。