为什么';forEach(aryA.push.bind(aryA))在JavaScript中工作吗?
例如:为什么';forEach(aryA.push.bind(aryA))在JavaScript中工作吗?,javascript,bind,Javascript,Bind,例如: > var aryA = []; undefined > var aryB = [1, 2, 3]; undefined > aryB.forEach(aryA.push.bind(aryA)); undefined > aryA [1, 0, Array[3], 2, 1, Array[3], 3, 2, Array[3]] 是的,我想将元素从aryB复制到aryA。当然我还有其他的解决方案,但为什么这个方法不起作用呢? 如果这是一个重复的问题,请原谅
> var aryA = [];
undefined
> var aryB = [1, 2, 3];
undefined
> aryB.forEach(aryA.push.bind(aryA));
undefined
> aryA
[1, 0, Array[3], 2, 1, Array[3], 3, 2, Array[3]]
是的,我想将元素从aryB
复制到aryA
。当然我还有其他的解决方案,但为什么这个方法不起作用呢?如果这是一个重复的问题,请原谅。我是新来的。嗯,它确实“管用”
.forEach
向回调传递三个参数:
.forEach
)push
作为回调传递,因此在每次迭代中基本上执行以下调用:
aryA.push(aryB[i], i, aryB);
i、 e.向数组中添加三个值,这正是您看到的结果:
[1, 0, Array[3], 2, 1, Array[3], 3, 2, Array[3]]
^ ^ ^ ^ ^ ^
| | array | | array
| 1. index | 2. index ...
1. element 2. element
我猜您只需要推送第一个参数,在这种情况下,您必须只使用第一个参数传递函数调用