【问题标题】:What is point of third parameter in forEach callback function in JavaScript [duplicate]JavaScript中forEach回调函数中第三个参数的意义是什么[重复]
【发布时间】:2017-04-19 15:44:53
【问题描述】:

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

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

上例中arrarray是同一个数组,arr存在于回调函数闭包中。

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

【问题讨论】:

  • 从函数式编程的角度来看,它可以让你保持函数的纯度。
  • 我想这可能是对未存储在变量中的数组文字的引用。 [1,2,3].forEach(function (elem, index, arrayReference) { ... });

标签: javascript arrays foreach


【解决方案1】:

如果你的回调函数在别处声明:

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

那么它不知道它被用于什么数组:

someArray.forEach(forEachCallback);

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

【讨论】:

  • 好吧,函数知道数组,但是有什么目的
  • @mortb 在处理每个单独的单元格时,回调可能需要来自数组中其他单元格的值。它可能想知道数组的长度。该数组可能具有执行回调所需的其他非数字属性。有很多很多的原因。我不认为我会说这是常见,但它确实有时会发生。
  • 很好的说明。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-29
    • 2013-10-07
    • 1970-01-01
    • 2017-06-30
    • 2021-04-06
    • 1970-01-01
    • 2020-02-07
    相关资源
    最近更新 更多