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语句,这个链就会断开,实际答案将被放弃。