我试图将数组的“push”方法直接传递给另一个数组上的 forEach 调用:
result = []
l1 = [1]
f = result.push.bind(result)
l1.forEach(f)
结果是:
> result
[ 1, 0, [ 1 ] ]
如果我这样做,则:
l1.forEach(function (x) { f(x); })
然后一切正常。这是怎么回事?
最佳答案
要了解发生了什么,请运行这段代码
[1].forEach(function() {
console.log(arguments);
});
你会收到
[1, 0, Array[1]]
提供给 forEach
方法的函数为每个数组元素调用,参数如下:
- 数组元素
- 元素位置
- 数组本身
因此,似乎您无法通过将 push
调用绑定(bind)到特定数组实例来做您想做的事情...
关于javascript - 绑定(bind)数组.push,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17544240/