了解匿名函数中的参数(回调示例)

时间:2014-12-09 00:22:47

标签: javascript callback

有一个简单的回调example in JavaScriptIsSexy,我想更好地理解:

var friends = ["Mike", "Stacy", "Andy", "Rick"];

friends.forEach(function (eachName, index){
console.log(index + 1 + ". " + eachName); // 1. Mike, 2. Stacy, 3. Andy, 4. Rick​
});

在这种情况下,参数eachNameindex如何被理解为分别表示数组的元素(人物的名称为字符串)和索引号?是否必须通过此处未显示的调用中的参数指定,但如果您希望注释中显示输出,则可以预期吗?

2 个答案:

答案 0 :(得分:2)

因为这是forEach函数的定义方式,按照https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

  

使用三个参数调用回调:

     
      
  • 元素值
  •   
  • 元素索引
  •   
  • 正在遍历的数组
  •   

显然,eachNameindex这些名称并不代表他们自己的意思。他们的意义纯粹是位置。你可以打电话给他们,并随心所欲地使用它们。无论您首先放置什么名称,都将用作元素值的参数名称,第二个用作元素索引,第三个用作数组。

即使您还没有使用它,如果您需要,还可以声明和使用第三个参数 - 整个数组。同样,如果您不关心索引,也不需要定义索引。

答案 1 :(得分:0)

这就是forEach的工作方式。

你给它一个函数来调用数组的每个元素。

将使用以下参数调用该函数(按顺序):

  1. 当前元素
  2. 当前元素的索引
  3. 整个数组
  4. 在你的情况下,你有

    function (eachName, index)
    

    因此,这意味着eachName是当前元素,index是索引,您不会使用第三个参数。

    除了这三个参数之外,您还可以选择在函数内部显示this。这是由forEach的可选第二个参数指定的(在您的回调函数之后)。