javascript - 为什么这个 javascript 函数总是返回一个未定义的数组?

标签 javascript function ecmascript-6 return undefined

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

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

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

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

由于某种原因,当我尝试返回已解码的数组时,我的代码总是返回未定义。事实上,即使我将 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]));

无论您使用什么返回语句,这都将始终返回未定义。控制台.log(A);另一方面是为我想要返回的内容提供正确的值。

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

最佳答案

问题在于,如果B.length != 0,则没有返回值。 改变

decode(newA, newB);

return decode(newA, newB);

关于javascript - 为什么这个 javascript 函数总是返回一个未定义的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54624210/

相关文章:

javascript - 您如何在 firebase firestore 功能中列出所有用户

c - C函数中的全局变量和返回多个可变长度数组(指针)

javascript - 避免在 TypeScript 中生成 `f(...args: any[])` 的死代码

javascript - 禁用 mysql 的时间选择器

javascript - 页面加载 10 秒后卡在执行此函数上

javascript - 在 Shiny 中同步两个 Highcharts - 输入更改时不调用 JS

javascript - setTimeout 不会等待,即使在等待调用函数时也是如此

javascript - 为什么我无法从事件接收器调用 Web 部件(用户控件)中的公共(public)方法?

javascript - 如何在 Firebase 函数中编写 Javascript GET 请求?

javascript - ES6 - 是否有一种优雅的方式来导入所有命名导出而不是默认导出?