![](/img/trans.png)
[英]javascript, passing parameters to a callback inside a closure that is inside a function
[英]Parameters inside callback function in Javascript
让我们考虑一下Javascript的每个方法:
var friends = ["Mike", "Stacy", "Andy", "Rick"];
friends.forEach(function (eachName, index){
console.log(index + 1 + ". " + eachName);
});
有人可以解释paraName eachName和index来自何处,因为它们没有在代码中的任何地方定义。
我理解这对许多人来说可能很明显,但我无法理解这个概念。
您应该阅读forEach的文档。 在forEach中声明的函数将为数组中的每个元素调用。 forEach将使用数组项的值作为第一个函数参数调用内部函数,并将数组的索引作为第二个函数参数调用。
所以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);
}
看一下MDN foreach polyfill的完整示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.