首页 > 解决方案 > 简单的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

标签: javascriptreturnundefined

解决方案


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

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))

推荐阅读