递归函数返回undefined
# 递归函数返回undefined
var arr = [];
function test(arr) {
if (arr.length >= 5) {
return arr
}
arr.push('1');
test(arr, n);
}
var bee = test(arr)
console.log(bee); // undefined
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
期望bee
的返回值是数组,但实际返回确实undefined
。
查询原因后才发现调用递归的地方也需要return
,否则会导致递归的最深层一个函数调用时有值,但是最外层的函数返回值确实undefined
。
最后一次进行递归操作的时候值是返回了,但只返回到了自己调用的函数里,而最初的函数是没有返回值的,所以是undefined
,如果想要函数最后一次计算所得值,就需要在每次调用该函数时进行return
,每一次return
都是把最新的函数调用返回到外层的函数调用,所以通过调用函数就能拿到值了。
上面代码修改后:
var arr = [];
function test(arr) {
if (arr.length >= 5) {
return arr
}
arr.push('1');
return test(arr, n);
}
var bee = test(arr)
console.log(bee); // ['1','1','1','1','1']
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
在GitHub上编辑 (opens new window)
上次更新: 2/18/2022, 5:29:56 PM