[英]How can a variable I pass into a function be undefined in that function?
函数“子集”告诉我“最大”未定义。
到底是怎么回事?
function ArrayAdditionI(arr)
{
arr.sort();
var largest = arr.pop()
console.log(largest);
subset([], arr, largest);
}
function subset(soFar, rest, largest)
{
var sum = 0;
if (rest.length === 0)
{
for(var i=0; i<soFar.length; i++)
{
sum+= soFar[i];
}
console.log("sum = "+ sum + " " + largest);
if (sum === largest) return true;
}
else
{
var soFar2 = soFar.slice(0);
soFar2.push(rest[0]);
subset(soFar,rest.slice(1));
subset(soFar2, rest.slice(1));
}
}
ArrayAdditionI([85,3,88,2])
subset(soFar,rest.slice(1));
在这里,您仅传递了2个参数,但该函数期望传递3个参数。在Javascript中,其余参数被赋予了undefined
值,而不是一个错误。 您可能希望这些行是:
subset(soFar,rest.slice(1), largest);
subset(soFar2, rest.slice(1), largest);
您没有在递归函数调用中传入第三个参数“ largest
。
最后,对子集的递归调用没有传递第三个参数,因此给它默认值undefined
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.