let arr = []
arr.forEach((item, index, _arr)=>{
})
我们都知道forEach回调方法接受三个参数item, index, _arr
,但是最近有人问第三个参数的用法,我一脸懵逼,有用过的吗?烦请举个例子,不胜感谢。。。
let arr = []
arr.forEach((item, index, _arr)=>{
})
我们都知道forEach回调方法接受三个参数item, index, _arr
,但是最近有人问第三个参数的用法,我一脸懵逼,有用过的吗?烦请举个例子,不胜感谢。。。
参数
描述
function(currentValue, index, arr)
必需。 数组中每个元素需要调用的函数。
函数参数:
参数
描述
currentValue
必需。当前元素
index
可选。当前元素的索引值。
arr
可选。当前元素所属的数组对象。
thisValue
可选。传递给函数的值一般用 "this" 值。
如果这个参数为空, "undefined" 会传递给 "this" 值
用处的话我倒是能想到一个,就是更快的查询到数组的引用。
如果你在回调中需要访问数组,而你又没有接受第三个参数,那么引擎需要向上层作用域查询是否存在变量,而如果你接受了第三个参数,那么相当于在当前作用域中就已经有这个变量了而不需要向上查询。这或许能算是一个好处吧,虽然可能微不足道。
还有的话可能跟程序的设计有关,比如你可能把回调定义在别的地方,但是回调中又希望访问数组,那么这时候以参数形式传递是最好的选择,不然数组就要定义在回调函数和forEach都能访问的作用域中比较局限。
其实想问题可以一步一步想
首先既然有了肯定有需求
为什么要用到这个参数或者在什么情况下会用到?
在不知道当前遍历操作的数组的情况下
什么情况下会不知道当前遍历的是什么数组?
封装的情况下
随便举例用到原数组的情况:
封装的情况: