【发布时间】:2020-03-08 19:09:12
【问题描述】:
我尝试做一个可以达到基本情况并返回值的递归。我发现需要返回函数才能取回值但不完全确定为什么要以这种方式工作的解决方案?
// Test one
var tracker = 0;
var executeMe = function() {
tracker++;
if(tracker === 2) {
return 'hits 2';
}
executeMe();
}
executeMe();
// return undefined ?
// Test two
var tracker = 0;
var executeMe = function() {
tracker++;
if(tracker === 2) {
return 'hits 2';
}
return executeMe();
}
executeMe();
// return 'hits 2' ?
【问题讨论】:
-
return executeMe(); -
在您的第一个示例中,当您到达树的底部时,您返回
hits 2。但是在上面的级别中,您不会从函数中返回值,因此executeMe()的最终结果是undefined。在您的第二个示例中,您已经解决了这个问题。 -
这是范围问题。您的控制台正在顶部范围内询问
executeMe()的结果。 executeMe() 在其内部范围内,检索并丢弃这些值。结果是顶级范围(您正在跟踪的唯一值),不返回任何内容
标签: javascript recursion