在下面的递归函数中,请注意我们必须如何使用 return
之前printArr
。如果我们不使用return
,然后做 printArr(num-1, [...arr, num]
,递归函数的返回值为undefined
。
我在 Google 和 StackOverflow 上搜索了此特定主题的解释,但找不到答案。有人可以解释一下为什么我们需要使用 return
当对函数进行递归调用时,甚至将我定向到我可能错过的 StackOverflow 问题或博客文章。
我认为这可能与调用堆栈有关,但从概念上讲,我很难理解它。
const printArr = (num, arr) => {
if (!num)
return arr
return printArr(num - 1, [...arr, num])
}
const printArr2 = (num, arr) => {
if (!num)
return arr
printArr(num - 1, [...arr, num])
}
// [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
console.log(printArr(10, []))
// undefined
console.log(printArr2(10, []))
最佳答案
在 JavaScript 中,如果您不在函数中执行 return
语句,则返回值将为 undefined
。
由于您想要返回一个值,因此需要一个 return
语句。
如果满足条件,那么您就有了想要返回的值,因此您返回
该值。
如果不满足条件,则需要递归调用该函数并返回
结果。
关于javascript - 递归返回函数调用——理论re return语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45536750/