好的,我知道在forEach函数中,动作参数充当打印函数,并在数组中的每个元素上调用下面的代码:
function forEach(array, action) {
for (var i = 0; i < array.length; i++)
action(array[i]);
}
forEach(["Wampeter", "Foma", "Granfalloon"], print);但在下一个示例中,将传递一个函数定义来代替forEach的操作参数,如下所示:
function sum(numbers) {
var total = 0;
forEach(numbers, function (number) {
total += number;
});
return total;
}
show(sum([1, 10, 100]));这让我迷失了方向。这段代码说明了如何打印给定数组的和,但我无法解释它是如何做到的,也无法解释它是如何工作的。问题1:既然number是局部的,并用来给出其最终值,那么它是如何或何时被赋予一个值的?问题2:+=总数如何作用于数组中的每个元素。
发布于 2013-08-10 00:07:57
参数number被传递给匿名函数,该函数为数组中的每个元素调用。number参数包含当前数组元素的值。在每次迭代期间,该值将被添加到全局变量total中,这将创建所有数组值的总和。然后,该函数返回total。
发布于 2013-08-10 00:11:39
在另一个函数中定义一个函数称为闭包。内部函数可以完全访问外部函数中定义的局部变量。
因此,当在forEach()调用中用作action的函数执行total += number时,这是将number (参数)添加到total (sum()中的局部变量)。在forEach()调用完成后,来自numbers的每个数字都将被添加到total中,并返回total。
发布于 2013-08-10 00:12:00
您将numbers作为forEach的第一个参数进行传递,因此它将遍历该数组中的每个元素,然后您将执行total += number;,这意味着total = total + number;。
https://stackoverflow.com/questions/18151051
复制相似问题