这是我的场景:在我的函数中,我想等待另一个函数执行一些递归操作并最终返回结果。但我刚刚得到了未定义的结果。
请参阅 fiddle 中查找代码这里。
我的代码:
let count = async() => {
let recursiveFunc = (index) => {
console.log(index);
if (index === 0) {
return "Finish";
} else {
index--;
recursiveFunc(index);
}
}
return recursiveFunc(3);
};
count().then(result => {
console.log(result);
})
我预计我会得到“3 2 1 0 Finish”的日志,但我得到“3 2 1 0 undefined”。
如果您发现我的错误,请给我一些指导。谢谢。
最佳答案
在 recursiveFunc(index)
调用之前缺少 return
关键字:
let count = async ()=>{
let recursiveFunc = (index) =>{
console.log(index);
if(index === 0){
return "Finish";
}else{
index--;
return recursiveFunc(index); // <-- here, `return`
}
}
return recursiveFunc(3);
};
count().then(result => {
console.log(result);
})
你最终得到了undefined
,因为在JavaScript中,如果你没有指定返回什么,函数默认返回undefined
,这就是你的代码中发生的情况。代码
关于javascript - 等待递归函数时获取未定义的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58621354/