将这个问题提到脑海中的代码(我正在努力理解)是:
function sum(numbers) {
var total = 0;
forEach(numbers, function (number) {
total += number;
});
return total;
}
show(sum([1, 10, 100]));
p.s forEach是一个执行此操作的函数:
function forEach(array, action) {
for (var i = 0; i < array.length; i++)
action(array[i]);
}
我想解释上面的代码是如何工作的,因为我不明白如何将函数作为函数的参数调用。
答案 0 :(得分:3)
我最关心的是如何将函数作为函数的参数调用。
在参数中没有调用它 - 函数本身被传递。在JavaScript中,函数是first-class values;它们是可以用括号调用的对象,但它们也有正常的属性(如.prototype
或.name
)和继承的方法(如.call
,{{ 1}})。看看docs for Function
objects。
您的.bind
代码正在创建一个匿名函数,并将对它的引用传递到sum
函数,并将其存储在forEach
变量中。然后从那里调用它。
使用另一个方法确定的值传递函数的概念名为callbacks。