JavaScript递归函数在分配给变量时如何工作?



嗨,我是JavaScript的新手,但我不明白递归函数在分配给变量时是如何工作的。下面的代码应该只有两个输出,但它有 3 个输出。

function capitalizeFirst(array) {
if (array.length === 1) {
return [array[0][0].toUpperCase() + array[0].substr(1)];
}
const res = capitalizeFirst(array.slice(0, -1));
console.log(res);
return res;
}
console.log(capitalizeFirst(['car', 'taco', 'banana']));

正如我认为的那样:首先大写First(array.slice(0,-1));将作为递归函数并将['Car']作为结果返回给res,然后控制台.log(res)打印结果,然后返回语句返回res函数,因此最终控制台.log(capitalizeFirst(['car', 'taco', 'banana'])); 结果应该返回 ['car']。所以在控制台屏幕中,我应该得到两个输出,但我得到三个为什么?

TLDR:递归函数将数组的第一个元素输出为大写字,等于数组的长度 - 1 并输出此结果。总输出等于数组长度。

数组的长度为 3,在基本情况下将返回一个数组。因此,res 将在递归函数内输出 2 次,在外部输出一次。

如果你有一个刚[Car]的数组,那么递归函数将返回[Car]该数组将被输出。

如果你有一个[car, taco]数组,它将首先通过递归函数,然后缩小到[Car],由于这是基本情况,将返回[Car]。这意味着在递归函数中,res =[Car]。既然你有console.log(res)return res[Car]将在递归函数内输出,然后在外部输出。

在数组长度为 3 的场景中,它将在[Car]内输出两次,因为递归函数会一直持续到长度为 1(这意味着它将两次击中console.log)。最后,当 res 返回时,它将被外部console.log输出[Car]

相关内容

  • 没有找到相关文章

最新更新