Javascript:返回未定义的链接对象/列表函数
我试图返回链接对象列表的长度。但是,我编写的函数没有返回任何内容Javascript:返回未定义的链接对象/列表函数,javascript,function,object,scope,Javascript,Function,Object,Scope,我试图返回链接对象列表的长度。但是,我编写的函数没有返回任何内容 let linkedObject = { value: 1, rest: { value: 2, rest: { value: 3, rest: null } } } function countDepth(liste, count = 0){ if (liste == null) return count else { count ++ liste
let linkedObject = { value: 1, rest: { value: 2, rest: { value: 3, rest: null } } }
function countDepth(liste, count = 0){
if (liste == null) return count
else {
count ++
liste = liste.rest
countDepth(liste, count)
}
}
console.log(countDepth(linkedObject))```
expected output:
'3'
actual output:
'undefined'
您需要返回递归调用:
return countDepth(liste, count);
还请注意,可以对其进行优化,使其更加简洁,如下所示:
const countDepth = (l, c = 0) => !l ? c : countDepth(l.rest, ++c);
这是可行的,但您可以解释为什么,以备将来参考。因为如果if语句没有实现,那么函数的执行中就没有返回,因此返回undefined。噢……我认为这是有道理的。第一次迭代返回第二次迭代,第二次迭代返回第三次迭代,依此类推……一直到实际答案。如果没有第二个return语句,这个链就会断开,实际答案将被放弃。