【发布时间】:2018-08-04 07:26:34
【问题描述】:
我是 JavaScript 新手,正在阅读 book,在递归章节中,有一个示例如下
function findSolution(target) {
function find(current, history) {
if (current == target)
return history;
else if (current > target)
return null;
else
return find(current + 5, "(" + history + " + 5)") ||
find(current * 3, "(" + history + " * 3)");
}
*return find(1, "1"); // when will this run?
}
console.log(findSolution(24));
// → (((1 * 3) + 5) * 3)
我无法理解 JavaScript 将如何运行这些原因,因为它在所有三个 if 情况下都期望 current 的值?但作者只是运行以target 作为参数的函数外部,而不是current。它是否从
return find(1,"1")
喜欢吊装吗?
【问题讨论】:
-
在定义
find之后立即使用两个参数调用它,1(current) 和"1"(history)。这不是提升,您实际上是在传递它们。 -
没有
return find(1, "1");什么都不会发生。这个内部函数不会被调用。这是第一次调用,有两个参数。没什么大不了的。
标签: javascript loops