内部函数的Javascript返回未定义

帕特尔

我正在做一个简单的 leetcode 问题,我们将一个数字添加到一个数字存储在数组中的数字上。我的逻辑运行良好,但返回值未定义。控制台给出正确答案。为什么?我该如何解决?

var plusOne = function(digits) {
    addNumber(digits.length - 1, 1, digits)
    
    function addNumber(index, value, digitsArr) {
        let sum = digitsArr[index] + value    
        if(sum > 9) {
            let onesDigit = parseInt(sum.toString().charAt(1))
            digitsArr[index] = onesDigit
            let twosDigit = parseInt(sum.toString().charAt(0))
            addNumber(index-1, twosDigit, digitsArr)
        } else {
          digitsArr[index] = sum
          console.log(digitsArr)
          return digitsArr
        }
    }
};

console.log(plusOne([1,2,9]))
解码器

1) return function 的值addNumber,如果你不从函数返回一些东西,那么 JS 将undefined隐式返回

  return addNumber(digits.length - 1, 1, digits);

2)addNumber在每种情况下,您都必须从函数返回值你可以做两件事之一

  • return digitsArr从功能addNumber而不仅仅是从else部分。
  • addNumber(index - 1, twosDigit, digitsArr);返回ifdigitsArr返回else

主要部分是从函数中返回一些完全取决于你想用代码做什么的东西。

var plusOne = function(digits) {
  return addNumber(digits.length - 1, 1, digits);

  function addNumber(index, value, digitsArr) {
    let sum = digitsArr[index] + value;
    if (sum > 9) {
      let onesDigit = parseInt(sum.toString().charAt(1));
      digitsArr[index] = onesDigit;
      let twosDigit = parseInt(sum.toString().charAt(0));
      addNumber(index - 1, twosDigit, digitsArr);
    } else {
      digitsArr[index] = sum;
    }
    return digitsArr;
  }
};

console.log(plusOne([1, 2, 9]));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章