0

让我想到这个问题的代码(并且我试图理解)是:

function sum(numbers) {
    var total = 0;
    forEach(numbers, function (number) {
        total += number;
    });
    return total;
}
show(sum([1, 10, 100]));

ps forEach 是一个执行此操作的函数:

function forEach(array, action) {
    for (var i = 0; i < array.length; i++)
        action(array[i]);
}

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

4

1 回答 1

3

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

它没有在参数中调用 - 函数本身被传递。在 JavaScript 中,函数是一等值;它们是可以用括号调用的对象,但它们也具有普通属性(如.prototypeor .name)和继承方法(如.call, .bind)。查看objects文档Function

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

传递函数以使用由另一个方法确定的值来调用的概念称为回调

于 2013-08-09T13:45:20.763 回答