第二次迭代后没有返回值

时间:2012-02-29 09:51:53

标签: javascript oop

我不知道这是错的:

      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 个答案:

答案 0 :(得分:2)

你错过了回归。

 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;
  }
}

答案 1 :(得分:0)

那是因为你应该每次都返回这个值:

 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;
        }
      };