为什么此javascript函数不断返回未定义的数组?

时间:2019-02-11 05:00:43

标签: javascript function ecmascript-6 return undefined

我有这个简单的函数“ decode”,它接受2个数组作为输入,其中第二个数组用于解码第一个数组。

起始输入(不是函数递归时)必须始终采用以下格式:

  1. 第一个数组的长度为1
  2. 第二个数组的长度是     2,减1(1,3,7,15,...)

示例输入: ([4],[0,2,6])

由于某种原因,当我尝试返回解码后的数组时,我的代码总是返回undefined。实际上,即使我将return语句更改为“ return false”之类的东西,我似乎也没有返回未定义的内容。日志语句显示两个数组都捕获了正确的值,这让我非常困惑。

这是我的代码:

var decode = function(A, B){
    console.log("A: "+A+" B:"+B);
    console.log(B.length);
    if(B.length===0){
        return A;
    }
    var newA = [];
    var newB = [];
    var act = 0;
    for(let i=0; i<A.length; i++){
        newA[act] = A[i] - (B[i]/2);
        newA[act+1] = A[i] + (B[i]/2);
        act+=2;
        newB = B.slice(i+1);
    }
    decode(newA, newB);
}

console.log("Answer is" + decode([4], [0,2,6]));

这将始终返回undefined,无论您执行哪种return语句。 Console.log(A);另一方面给了我想要退货的正确价值。

非常感谢您的帮助!非常感谢。

1 个答案:

答案 0 :(得分:1)

问题是如果B.length!= 0,则没有返回值。 更改

decode(newA, newB);

return decode(newA, newB);