为什么这个javascript函数总是返回一个未定义的数组?
我有一个简单的函数decode,它接受2个数组作为输入,其中第二个数组用于解码第一个数组 非函数递归时的起始输入必须始终采用以下格式: 第一个数组的长度为1 第二个数组的长度为 2,减去1,3,7,15,。。。 输入示例: [4] ,[0,2,6] 由于某些原因,当我尝试返回解码数组时,代码总是返回undefined。事实上,除了未定义之外,我似乎无法返回任何内容,即使我将return语句更改为returnfalse之类的内容。log语句显示两个数组都捕获了正确的值,这让我非常困惑 这是我的密码:为什么这个javascript函数总是返回一个未定义的数组?,javascript,function,ecmascript-6,return,undefined,Javascript,Function,Ecmascript 6,Return,Undefined,我有一个简单的函数decode,它接受2个数组作为输入,其中第二个数组用于解码第一个数组 非函数递归时的起始输入必须始终采用以下格式: 第一个数组的长度为1 第二个数组的长度为 2,减去1,3,7,15,。。。 输入示例: [4] ,[0,2,6] 由于某些原因,当我尝试返回解码数组时,代码总是返回undefined。事实上,除了未定义之外,我似乎无法返回任何内容,即使我将return语句更改为returnfalse之类的内容。log语句显示两个数组都捕获了正确的值,这让我非常困惑 这是我的密码
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]));
无论您使用什么return语句,它都将返回undefined。Console.logA;另一方面,为我想要返回的内容提供正确的值
非常感谢你的帮助!非常感谢。问题是如果B.length!=0,则没有返回值。 改变 德克纽瓦,纽布; 到 返回decodenewA,newB;
因为函数中没有“return”关键字。@dwjohnston有一个。。。总是返回一个。。。但事实上,在接近尾声时需要某种回报。。。把这篇文章变成简单的印刷错误。只需返回decodenewA,newB@smnbbrv谢谢这给了我想要的。然而,我仍然不明白为什么这样做有效,而不是我做了什么。。。我可能对递归/返回语句有点困惑。