javascript - 为什么 aryB.forEach(aryA.push.bind(aryA)) 在 JavaScript 中不起作用?

标签 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。我当然有其他的解决办法,但是为什么这个方法不行呢?
如果这是一个重复的问题,请原谅。我是 Stackoverflow 的新手。

最佳答案

嗯,它确实“有效”。 .forEach 将三个参数传递给回调:

  1. 当前数组元素
  2. 当前数组元素的索引
  3. 数组本身(即 .forEach 被调用)

由于您将 push 作为回调传递,因此您实质上是在每次迭代中执行以下调用:

aryA.push(aryB[i], i, aryB);

即将三个值添加到数组中,这正是您所看到的结果:

[1, 0, Array[3], 2, 1, Array[3], 3, 2, Array[3]]
 ^  ^  ^         ^  ^  ^
 |  | array      |  |  array
 | 1. index      | 2. index      ...
1. element      2. element

我猜你只想压入第一个参数,在这种情况下你必须传递一个函数调用 .push 只有第一个参数。

关于javascript - 为什么 aryB.forEach(aryA.push.bind(aryA)) 在 JavaScript 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42642563/

相关文章:

Cassandra DB - 绑定(bind)变量

javascript - 将鼠标悬停在动态创建的列表上

javascript - navigator.mimeTypes 结构

javascript - 为什么调用 Function.apply.bind(fn, null) 调用 `fn.apply` 而不是 `Function.apply` ?

c# - GroupBox header 绑定(bind)中的 StringFormat 似乎不起作用

javascript - 具有绑定(bind)值的数组过滤器

javascript - 在div内执行javascript

javascript - Jquery 在 firefox os 模拟器中不工作

javascript - 如何通过 jQuery 滑动切换下拉菜单项?

php - MySQLI 使用 call_user_func_array 绑定(bind)参数