我不知道这是错的:
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),我的变量的值是未定义的。我不明白。
答案 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;
}
};