回调函数的参数如何工作?

时间:2017-05-15 00:56:58

标签: javascript arrays callback higher-order-functions

所以我试图理解特定的函数式编程和高阶函数。我从未清楚理解的是,回调函数的参数如何连接到例如数组?

为了更清楚,我们来看看这个代码示例:

Hashtable

回调参数var friends = ["Mike", "Stacy", "Andy", "Rick"]; friends.forEach(function (eachName, index){ console.log(index + 1 + ". " + eachName); // 1. Mike, 2. Stacy, 3. Andy, 4. Rick }); 如何知道它意味着从数组返回项目而eachName应该返回数组的索引?数组和回调参数之间的连接如何工作?

2 个答案:

答案 0 :(得分:2)

forEach方法正在调用或调用您的回调函数。更具体地说,让我们看看forEach是如何工作的。

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

现在你可以做这样的事了。

&#13;
&#13;
function forEach(arr, func) {
  for (var i = 0; i < arr.length; i++) {
    func(arr[i], i);
  }
}

var cars = ["BMW", "Tata Nano", "Lamborghini"];

forEach(cars, function (car, index) {
  alert(car + " "  + index);
});
&#13;
&#13;
&#13;

答案 1 :(得分:0)

API为您完成。在这种情况下,array.forEach的回调始终设置为接受3个参数:当前项,数组中当前项的索引以及数组本身。

具有不同参数签名的API的一个示例是array.reduce。它被设置为接受4个参数:累加器,当前项,当前项的索引和数组本身。