2017-04-19 337 views
3

我知道forEach在JavaScript调用我的回调函数,有三个参数:什么是的forEach回调函数的第三个参数的点在JavaScript

arr.forEach(function callback(currentValue, index, array) { 
    //your iterator 
}) 

在上面的例子arrarray是相同的阵列和arr存在回调函数关闭。

现在的问题是什么点将array传递给回调函数?

+3

从功能编程的角度来看,它可以让你保持功能的纯净。 – haim770

+3

我想它可能是对未存储在变量中的数组文字的引用。 '[1,2,3] .forEach(function(elem,index,arrayReference){...});' – mhodges

回答

6

如果你的回调函数在其他地方宣布:

function forEachCallback(value, i, array) { 
    // ... 
} 

然后,它不知道它正在使用的阵列为:

someArray(forEachCallback); 

因为数组作为最后一个参数传递,这样的回调可以访问它。

+0

好吧,函数知道数组,但*为了什么目的*? – mortb

+1

@mortb在处理每个单独单元时,回调可能需要数组中其他单元的值。它可能想知道数组的长度。该数组可能具有其他非数字属性,这些属性是执行回调所需的属性。有很多原因。我不认为我会说这是常见的,但它有时会发生。 – Pointy

+0

很好的说明。 – mortb

5

该回调不必与forEach调用的范围相同。在这种情况下,第三个参数将确保回调对该数组有一些引用。

相关问题