繁体   English   中英

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

[英]how JavaScript recursive function works when assigned to variable?

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

 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']));

正如我所想:首先 capitalizeFirst(array.slice(0, -1)); 将作为递归 function 返回 ['Car'] 作为 res 的结果,然后 console.log(res) 打印结果然后返回语句返回 res 到 function 所以最终 console.log(capitalizeFirst(['car', 'taco', '香蕉'])); 结果应该返回 ['car'] 。 所以在控制台屏幕上我应该得到两个 output 但我却得到三个,为什么?

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

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

如果您的数组只是[Car] ,则递归 function 将返回[Car]并将被输出。

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

在数组长度为 3 的情况下,它将在 output [Car]内两次,因为递归 function 一直持续到长度为 1(这意味着它将两次访问console.log )。 最后返回 res 的时候,就是[Car]会被外面的console.log输出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM