3

我试图将数组的“推送”方法直接传递给另一个数组上的 forEach 调用:

result = []
l1 = [1]
f = result.push.bind(result)
l1.forEach(f)

结果是:

> result
[ 1, 0, [ 1 ] ]

如果我这样做,请改为:

l1.forEach(function (x) { f(x); })

然后一切正常。到底是怎么回事?

4

1 回答 1

6

要了解发生了什么,请运行此代码

[1].forEach(function() {
    console.log(arguments);
});

你会收到

[1, 0, Array[1]]

forEach使用以下参数为每个数组元素调用提供给方法的函数:

  1. 数组元素
  2. 元素位置
  3. 数组本身

因此,您似乎无法通过将push调用绑定到特定数组实例来做您想做的事情......

于 2013-07-09T09:10:38.640 回答