繁体   English   中英

Javascript中回调函数内的参数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM