second+迭代后没有返回值

No return value after second+ iteration

本文关键字:返回值 迭代 second+      更新时间:2023-09-26

我不知道这是怎么回事:

      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),我的变量的值未定义。我不明白。

您缺少返回。

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

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

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