我最近注意到,当使用
如果我在回调函数内部访问正在映射的数组,那么为什么/何时应该使用第三个参数而不是直接访问该数组?
即使我能想象出每种情况下这两种方法都可以正常工作,但我想知道哪种方法是推荐的以及原因。 示例
array.prototype.map()
时,我的回调函数可能会接受第三个参数,这是我正在映射的数组。我想知道是否有任何用例适用于此参数,因为在回调函数内部,可以访问该数组。如果我在回调函数内部访问正在映射的数组,那么为什么/何时应该使用第三个参数而不是直接访问该数组?
即使我能想象出每种情况下这两种方法都可以正常工作,但我想知道哪种方法是推荐的以及原因。 示例
myArr.filter(x => x % 2 == 1).map((x, i, arr) => x+arr.length)
- 这是一个链式操作,所以在第一个链结束后,你不能再引用myArr
作为你的工作数据。你可以停止链式操作,将其赋值给一个变量并使用,但这有点浪费。情况2:你的回调函数与你拥有的数组处于不同的作用域中。在一个地方,你有callback = (x, i, arr) => x+arr.length
,在另一个地方你使用myArr.map(callback)
,所以你不能在回调函数中引用原始数组。 - VLAZ