简单的JavaScript函数不返回值



我写了一个简单的函数,它会相乘,直到结果变成一位数。例如,当您将1234作为参数时,流将如下所示:(参数:1234(=>(结果:1*2*3*4=24(=>(参数:24(>>(结果:2*4=8(=>返回8。

它产生了我所期望的结果,但并没有返回值。当我把1234作为一个参数时,它会经过计算,最终结果变成8,但它不会返回结果。这很奇怪,因为console.log工作,但return不工作。

为什么它是这样工作的?

function multiplicativePersistence (num) {
if (num >= 10) {
let result = 1;
String(num).split('').forEach((ele) => {
result = result * Number(ele);
})
multiplicativePersistence(result);
} else {
console.log(num); // 8
return num; // undefined
}
}
console.log(multiplicativePersistence(1234)) // console.log says 8 but nothing is returned

您需要返回递归调用的函数:

function multiplicativePersistence (num) {
if (num >= 10) {
let result = 1;
String(num).split('').forEach((ele) => {
result = result * Number(ele);
})
return multiplicativePersistence(result); // return here
} else {
console.log(num); // 8
return num; // undefined
}
}
console.log(multiplicativePersistence(1234))

最新更新