回调函数的参数如何工作?
How callback function's parameters work?
所以我正在尝试具体了解函数式编程和高阶函数。我一直不清楚的是,回调函数的参数是如何连接到一个数组的?
为了更清楚,让我们以这个代码为例:
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
如何知道它意味着 return 数组中的项目并且 index
应该 return 数组的索引?数组和回调参数之间的连接如何工作?
API 为您代劳。在这种情况下,array.forEach
的回调始终设置为接受 3 个参数:当前项、当前项在数组中的索引以及数组本身。
具有不同参数签名的 API 的一个示例是 array.reduce
。它设置为接受 4 个参数:累加器、当前项、当前项的索引和数组本身。
forEach
方法正在调用或调用您的回调函数。更具体地说,让我们看看 forEach 是如何工作的。
function forEach(arr, func) {
for (var i = 0; i < arr.length; i++) {
func(arr[i], i);
}
}
现在你可以做这样的事情了。
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);
});
所以我正在尝试具体了解函数式编程和高阶函数。我一直不清楚的是,回调函数的参数是如何连接到一个数组的?
为了更清楚,让我们以这个代码为例:
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
如何知道它意味着 return 数组中的项目并且 index
应该 return 数组的索引?数组和回调参数之间的连接如何工作?
API 为您代劳。在这种情况下,array.forEach
的回调始终设置为接受 3 个参数:当前项、当前项在数组中的索引以及数组本身。
具有不同参数签名的 API 的一个示例是 array.reduce
。它设置为接受 4 个参数:累加器、当前项、当前项的索引和数组本身。
forEach
方法正在调用或调用您的回调函数。更具体地说,让我们看看 forEach 是如何工作的。
function forEach(arr, func) {
for (var i = 0; i < arr.length; i++) {
func(arr[i], i);
}
}
现在你可以做这样的事情了。
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);
});