if语句内return未返回预期值:递归计算器函数返回undefined问题
递归调用未返回结果导致返回undefined的问题
你的问题出在递归调用没有返回结果上。
看calculate函数里的这行代码:
calculate(input.toSpliced(operation.ind - 1, 3, operationOutcome));
你在这里发起了递归调用,但没有把递归的返回值传递回去。虽然最后一层递归(当operation为null时)确实返回了input[0],但上层的递归调用只是执行了这个函数,没有把结果return出去,所以每一层上层函数都会默认返回undefined,最终最外层的console.log拿到的就是undefined。
只需要给这行递归调用加上return即可:
return calculate(input.toSpliced(operation.ind - 1, 3, operationOutcome));
修改后的完整calculate函数:
const calculate = (input) => { const operation = findNextOperation(input); if (operation === null) { console.log('here', input[0]) // Logs "here -2" to the console return input[0]; } const operationOutcome = performOperation(input[operation.ind - 1], input[operation.ind + 1], operation.operation); return calculate(input.toSpliced(operation.ind - 1, 3, operationOutcome)); }
这样递归的结果会逐层传递回最外层,console.log就能打印出正确的计算结果了。
内容的提问来源于stack exchange,提问作者Wanzie
相关产品推荐
相关产品推荐

