JavaScript中forEach回调函数的第三个参数是什么?

Ara*_*oft 6 javascript arrays foreach

我知道JavaScript 中的forEach使用三个参数调用我的回调函数:

arr.forEach(function callback(currentValue, index, array) {
    //your iterator
})
Run Code Online (Sandbox Code Playgroud)

在上面的例子arrarray是相同的阵列与arr存在于回调函数闭合.

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

Poi*_*nty 12

如果您的回调函数在其他地方声明:

function forEachCallback(value, i, array) {
  // ...
}
Run Code Online (Sandbox Code Playgroud)

然后它不知道它用于什么数组:

someArray.forEach(forEachCallback);
Run Code Online (Sandbox Code Playgroud)

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

  • @mortb在处理每个单独的单元格时,回调可能需要来自阵列中其他单元格的值.它可能想知道数组的长度.该数组可能具有执行回调操作所需的其他非数字属性.原因很多很多.我不认为我会说这是*常见*,但有时肯定会发生. (4认同)
  • 好吧,函数知道数组,但是*出于什么目的*? (2认同)

Nie*_*sol 5

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