我们都知道forEach回调方法接受三个参数item index _arr,但是最近有人问第三个参数的用法,我一脸懵逼,有用过的吗?烦请举个例子,不胜感谢。

为什么要用到这个参数或者在什么情况下会用到?

什么情况下会不知道当前遍历的是什么数组?

必需。 数组中每个元素需要调用的函数。

可选。传递给函数的值一般用 "this" 值。

用处的话我倒是能想到一个,就是更快的查询到数组的引用。

如果你在回调中需要访问数组,而你又没有接受第三个参数,那么引擎需要向上层作用域查询是否存在变量,而如果你接受了第三个参数,那么相当于在当前作用域中就已经有这个变量了而不需要向上查询。这或许能算是一个好处吧,虽然可能微不足道。

还有的话可能跟程序的设计有关,比如你可能把回调定义在别的地方,但是回调中又希望访问数组,那么这时候以参数形式传递是最好的选择,不然数组就要定义在回调函数和forEach都能访问的作用域中比较局限。