【发布时间】:2015-07-19 23:50:26
【问题描述】:
我有一个我能理解的功能。
function forEach(array, action) {
for (var i = 0; i< array.length; i++)
action(array[i]);
}
当我们调用该函数时,让我们说forEach([1,2,3,4,5], console.log);
该代码将正文中的单词 action 替换为单词 console.log。一切都像一个魅力。对吧?
但在这种情况下,我对匿名函数感到困惑。
var numbers = [1, 2, 3, 4, 5], sum = 0;
forEach(numbers, function(number) { sum += number; });
在这种情况下,我们有一个匿名函数作为参数。匿名函数如何从数组numbers中一个一个地取出元素,并将其放入它的参数(number)中?
我可以让它更容易理解:
var FindSum = function (number) {
sum += number;
};
forEach(numbers, FindSum);
但我仍然对参数编号感到困惑。 FindSum函数如何接收数字?
【问题讨论】:
-
我不确定你在问什么,但是下面的最终代码是有效的
-
我在问代码如何理解数组的元素应该放在参数号内。
-
这两种情况几乎相同。在这两种情况下,您都传递了一个函数引用。在第一个中,您传递主机方法的名称 (console.log),在第二个中,您传递一个函数表达式(如果需要,可以有一个名称),所以唯一有对它的引用是 forEach 函数的 action 参数。除此之外,一切都一样。
标签: javascript arrays foreach