【发布时间】:2014-10-21 20:06:12
【问题描述】:
作为 JavaScript 的绝对初学者,我必须选择一些好的资源来帮助我学习它。我选择了 David Flanagan 的“JavaScript: The Definitive Guide”,到目前为止,我认为这本书中的所有内容都得到了彻底的解释,但我遇到了困难……
这就是问题所在,在“函数”->“参数类型”一章中,有一个函数示例,它可以添加数组的数字或元素。此函数可以接受任何数量和类型(如果它可以将其转换为数量)的参数。代码如下:
function flexisum() {
var total = 0;
for (var i = 0; i < arguments.length; i++) {
var element = arguments[i], n;
if (element == null) continue;
if (isArray(element))
n = flexisum.apply(this, element);
else if (typeof n === "function")
n = Number(element());
else
n = Number(element);
total += n;
}
return total;
}
让我感到困惑的是递归发生的那一行,我无法弄清楚 n 评估的值是什么。例如,如果 element = [1,2,3],则 flexisum(1,2,3) 被分配给 n.. . 但是,如果 n 没有初始值,我该如何将该值添加到变量 total 中,或者有吗?
英语不是我的母语,所以我希望我说得够清楚......我将不胜感激。
【问题讨论】:
-
total的初始值为0。还是您的意思是n没有初始值?这没关系,因为n保证通过else块有一个值。
标签: javascript recursion methods apply