javascript - 绑定(bind)数组.push

标签 javascript

我试图将数组的“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 方法的函数为每个数组元素调用,参数如下:

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

因此,似乎您无法通过将 push 调用绑定(bind)到特定数组实例来做您想做的事情...

关于javascript - 绑定(bind)数组.push,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17544240/

相关文章:

javascript - 我可以在不使用 new 关键字的情况下构造 JavaScript 对象吗?

javascript - laravel - 基于 droplist 修改验证规则

javascript - Internet Explorer 对象不支持此属性或方法

javascript - 如何使 2 div 的中间可调整大小以更改大小? (我正在使用 Bootstrap 4)

javascript - 在Javascript中按字母顺序对字符串进行排序

javascript - 单击 crossridder 中的上下文菜单时如何打开弹出窗口对话框?

javascript - 如何在图表 API x/y 轴标签中仅显示整数(无小数)

javascript - JS/jQuery 根据单选/选择值显示文本框

javascript - 如何阻止页面之间简单的 javascript 冲突?

javascript - 动态获取slide的一个值