函数返回Undefined

时间:2017-06-05 09:11:13

标签: javascript

我需要一个小代码的小帮助。该函数返回undefined,我想返回总和的console.log。代码在这里http://jsbin.com/jedigigigo/edit?js,console



var addDigits = function a(num) {
  var length = num.toString().length;
  var value = num.toString();
  var sum = 0;
  for (var i = 0; i < value.length; i++) {
    sum += Number(value[i]);
  }
  if (sum > 9) {
    a(sum);
  } else {
    console.log(sum);
    return sum;
  }
};


console.log(addDigits(38));
&#13;
&#13;
&#13;

4 个答案:

答案 0 :(得分:5)

在if语句中添加return: -

/**
* @param {number} num
* @return {number}
*/

&#13;
&#13;
var addDigits = function a(num) {
  var length = num.toString().length;
  var value = num.toString();
  var sum = 0;
  for (var i = 0; i < value.length; i++) {
    sum += Number(value[i]);
  }
  if (sum > 9) {
    return a(sum);
  } else {
    console.log(sum);
    return sum;
  }
};


console.log(addDigits(38));
&#13;
&#13;
&#13;

答案 1 :(得分:4)

 if(sum>9) {
     return a(sum); // You forgot to return a value from recursive call.
 }

虽然代码看起来很奇怪:)

答案 2 :(得分:0)

我已经编辑了你的代码。我不知道为什么在这里递归调用和。如果我理解它是正确的那么你只是想要返回一个数字的总和(非负数)。我修改了你的代码,如下所示

var addDigits = function a(num) {
     var length=num.toString().length;
     var value=num.toString();
     var sum=0;
     for(var i=0;i<value.length;i++) {
         sum+=Number(value[i]);
     }
     return sum;
};
console.log(addDigits(23456));

我更新了您的垃圾箱,您也可以查看here

答案 3 :(得分:0)

var addDigits = function a(num) {
         var length=num.toString().length;
         var value=num.toString();
         var sum=0;
         for(var i=0;i<value.length;i++) {
             sum+=Number(value[i]);
         }
         if(sum > 9) {
             return a(sum);
         }
         else
         {
            return sum;
         }

    };

    console.log(addDigits(38));