如何将函数作为函数的参数调用?

时间:2013-08-09 13:33:58

标签: javascript

将这个问题提到脑海中的代码(我正在努力理解)是:

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]);
}

我想解释上面的代码是如何工作的,因为我不明白如何将函数作为函数的参数调用。

1 个答案:

答案 0 :(得分:3)

  

我最关心的是如何将函数作为函数的参数调用。

在参数中没有调用它 - 函数本身被传递。在JavaScript中,函数是first-class values;它们是可以用括号调用的对象,但它们也有正常的属性(如.prototype.name)和继承的方法(如.call,{{ 1}})。看看docs for Function objects

您的.bind代码正在创建一个匿名函数,并将对它的引用传递到sum函数,并将其存储在forEach变量中。然后从那里调用它。

使用另一个方法确定的值传递函数的概念名为callbacks