javascript - 简单的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))
推荐阅读
- python - 如何从 JSON 制作表格?ValueError:将字典与非系列混合可能会导致排序不明确
- usb - 在 Linux 和 Android 设备之间使用 libusb 传输文件
- c# - Web.confg 问题多用户访问
- typescript - 异步下载静态图片,NextJS + TypeScript
- .net - NewRelic 中的内存使用情况
- php - 如何计算以下函数
- jquery - 在调整浏览器窗口大小之前,背景图像不会显示在动画 div 上
- node.js - CastError:在 findOne 和其他中,模型“Users”的路径“_id”处的值“0”(类型字符串)转换为 ObjectId 失败
- javascript - 无法在 useEffect 挂钩处停止嵌套组件的无限循环
- c++ - 将 boost ASIO 缓冲区数据转换为 JPEG 格式的 opencv 矩阵