为什么我的递归函数调用没有返回值
Why is my recursive function call not returning a value?
我有以下代码,试图返回两个数字之间的范围,而内部函数没有返回值。它只是返回 [函数]。谁能告诉我为什么?
var range = function(num1, num2) {
var output = [];
return function range2 () {
if (num2 - num1 === 2) {
return [num1+1];
}
else if (output.length + 1 === num2 - num1) {
return output;
}
else if (output.length + 1 !== num2 - num1) {
output.push(num1 + 1);
}
return range2(num1 + 1, num2);
};
};
更新:这是我最终工作的代码,FWIW:
var range = function(num1, num2) {
var list = [];
var range2 = function(num1, num2) {
list.push(num1 + 1);
if (num2 - num1 === 2) {
return list;
}
else {
return range2(num1 + 1, num2);
}
};
return range2(num1, num2);
};
您的返回将返回定义。 如果您尝试返回函数的执行,则需要添加一个()
看这里:
var range = function(num1, num2) {
var output = [];
return function range2 () {
if (num2 - num1 === 2) {
return [num1+1];
}
else if (output.length + 1 === num2 - num1) {
return output;
}
else if (output.length + 1 !== num2 - num1) {
output.push(num1 + 1);
}
return range2(num1 + 1, num2);
}(); // <---- this will execute the defined function.
};
range()
函数从不调用 range2()
。它只返回函数表达式。
此外,range2()
需要接受论据。
var range = function(num1, num2) {
var output = [];
function range2(num1, num2) {
if (num2 - num1 === 2) {
return [num1 + 1];
} else if (output.length + 1 === num2 - num1) {
return output;
} else if (output.length + 1 !== num2 - num1) {
output.push(num1 + 1);
}
return range2(num1 + 1, num2);
};
return range2(num1, num2);
};
alert(range(1, 10));
相关文章:
- 如何记录调用另一个函数的函数的返回值
- 从JSP页面调用Java Script函数未返回值
- 来自函数 Javascript 的 NaN 返回值 ||函数执行顺序
- 未使用返回值时调用方法
- 如何在循环中调用Promise函数并保存其返回值
- angularjs从html调用函数返回值
- jQuery deferred:用于延迟函数的返回,直到函数内的异步调用完成+获取返回值
- PHP调用脚本函数,返回值为Uncaught SyntaxError:意外的令牌ILLEGAL
- 如何使用Ajax内部调用JQuery在函数中获取返回值
- 为什么当我调用具有返回值的函数时,我的 onclick 事件不起作用
- 从函数从 JavaScript 调用 servlet 的 Ajax 不返回值
- 带有 AJAX 调用的 Javascript 函数 - 在响应后返回值
- 将一个函数作为参数传递给另一个函数,每次调用函数时检查返回值
- 如何在 c# 代码隐藏中调用具有返回值的 Javascript 函数
- 在 html 输入字段中使用返回值函数
- 从 CodeBehind 调用 Javascript 函数并返回值
- 使用带有返回值的 C# CodeBehind 调用 jQuery 函数
- 返回父函数调用的数组
- 带参数的调用函数和带其他参数返回值的调用函数有什么不同
- 从索引数据库检索数据并将值返回给函数调用