让我们考虑一下Javascript的每个方法:
var friends = ["Mike", "Stacy", "Andy", "Rick"];
friends.forEach(function (eachName, index){
console.log(index + 1 + ". " + eachName);
});
Run Code Online (Sandbox Code Playgroud)
有人可以解释paraName eachName和index来自何处,因为它们没有在代码中的任何地方定义.
我理解这对许多人来说可能很明显,但我无法理解这个概念.
您应该阅读有关 forEach 的文档。数组中的每个元素都会调用 forEach 中声明的函数。forEach 将调用内部函数,将数组项的值作为第一个函数参数,将数组项的索引作为第二个函数参数。
因此,forEach 将迭代数组,类似于 for 循环,对于数组中的每个项目,它将获取值和索引并将其传递给声明的函数。
您的困惑很可能来自参数名称,但这些名称可以是任何名称。第一个参数始终是当前项目数组值,第二个参数是索引。
要编写自己的函数,您需要创建一个调用已定义函数的 for 循环。
如果我们查看您的原始代码并提取该函数(这对于测试顺便说一句很有用)。
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);
}
Run Code Online (Sandbox Code Playgroud)
查看 MDN foreach polyfill 以获得完整的示例。
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |