Нет возвращаемого значения после второй + итерации - PullRequest
0 голосов
/ 29 февраля 2012

Я не знаю, что с этим не так:

      var get_depth = function(item, depth) {
        if(item.parent_id !== null) {
          get_depth(get_item_by_id(item.parent_id),depth+1);
        } else {
          alert ("return: " + depth);
          return depth;
        }
      };

В предупреждающем сообщении всегда указывается правильная глубина, но переменная, в которой я хочу сохранить значение, принимает только одну итерацию (возвращаемое значение = 1), после двух или более итераций значение моей переменной не определено. Я не понимаю этого.

Ответы [ 2 ]

2 голосов
/ 29 февраля 2012

вам не хватает возврата.

 var get_depth = function(item, depth) {
        if(item.parent_id !== null) {
          return get_depth(get_item_by_id(item.parent_id),depth+1);
        } else {
          alert ("return: " + depth);
          return depth;
        }
      };

А почему вы не используете этот синтаксис?Мне легче пройти:

function get_depth(item, depth) {
  if(item.parent_id !== null) {
    return get_depth(get_item_by_id(item.parent_id),depth+1);
  } else {
    alert ("return: " + depth);
    return depth;
  }
}
0 голосов
/ 29 февраля 2012

Это потому, что вы должны возвращать значение каждый раз:

 var get_depth = function(item, depth) {
        if(item.parent_id !== null) {
          return get_depth(get_item_by_id(item.parent_id),depth+1);
        } else {
          alert ("return: " + depth);
          return depth;
        }
      };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...