Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么';forEach(aryA.push.bind(aryA))在JavaScript中工作吗?_Javascript_Bind - Fatal编程技术网

为什么';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
    

    我猜您只需要推送第一个参数,在这种情况下,您必须只使用第一个参数传递函数调用