绑定Array.push

Vla*_*rus 3 javascript

我试图将数组的'push'方法直接传递给另一个数组上的forEach调用:

result = []
l1 = [1]
f = result.push.bind(result)
l1.forEach(f)
Run Code Online (Sandbox Code Playgroud)

结果最终结果是:

> result
[ 1, 0, [ 1 ] ]
Run Code Online (Sandbox Code Playgroud)

如果我这样做,而是:

l1.forEach(function (x) { f(x); })
Run Code Online (Sandbox Code Playgroud)

一切正常.到底是怎么回事?

Ole*_*gas 6

要了解正在运行的内容,此代码将被剪切

[1].forEach(function() {
    console.log(arguments);
});
Run Code Online (Sandbox Code Playgroud)

你会收到的

[1, 0, Array[1]]
Run Code Online (Sandbox Code Playgroud)

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

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

所以,似乎你无法通过绑定push对特定数组实例的调用来做你想做的事情......