让我们考虑一下Java的forEach方法:
var friends = ["Mike", "Stacy", "Andy", "Rick"];
friends.forEach(function (eachName, index){
console.log(index + 1 + ". " + eachName);
});
由于代码中未定义参数eachName和index的含义,因此请解释一下。
我知道这对许多人来说可能是很明显的,但是我无法理解这个概念。
答案 0 :(得分:4)
您应该阅读forEach上的文档。对于数组中的每个元素,都会调用forEach中声明的函数。 forEach将使用数组项的值作为第一个函数参数并使用数组alement的索引作为第二个函数参数调用内部函数。
因此forEach将遍历数组,类似于for循环,并且对于数组中的每个项目,它将获取值和索引并将其传递给声明的函数。
您的困惑很可能来自参数名称,但是这些名称可以是任何名称。第一个参数将始终是当前项目数组的值,第二个参数将是索引。
要编写自己的函数,您需要创建一个for循环,以调用已定义的函数。
如果我们查看您的原始代码并提取该功能(这对测试BTW很有用)。
var friends = ["Mike", "Stacy", "Andy", "Rick"];
function doStuff(eachName, index){
console.log(index + 1 + ". " + eachName);
}
// Does is still the same as yours
friends.forEach(doStuff);
// This loop does exactly what a forEach polyfill would do
for(var i = 0; i < friends.length; i++) {
doStuff(a[i], i);
}
请查看每个polyfill的MDN以获取完整示例。