在 [].forEach.call() 中,[] 代表什么?

5
在以下代码中,我不确定[]代表什么。我假设它只是表示最近声明的数组。有人可以澄清一下吗?
var lists = [racersList, volunteersList];
[].forEach.call(lists, function(list) {
    ...
});

2
为什么不直接使用 lists.forEach(function(list), {...}); 呢? - Blender
@Blender 他在问这段代码是做什么的,所以他没有编写它。 - user247702
@Stijn:也许吧。提些建议不会有什么损失。 - Blender
Raymond,你链接的问题回答了我的问题。谢谢。 - earllee
1个回答

17

这是一个空数组。究竟是哪个数组并不重要;只需要有一个数组来获取数组的forEach方法。你也可以使用Array.prototype.forEach直接获取它,而不是创建一个空数组并从中提取forEach

当你有一个类似数组的对象(例如NodeList; 具有length, 0, 1, 2等属性),但实际上并不是一个数组时,通常会使用这种方法。该类似数组对象没有数组方法,但是如果你能用适当的this(使用call实现)让数组方法运行,它们仍将起作用。

由于这里实际上有一个真正的数组,而不是一个类似数组的对象,因此您可以直接调用forEach,例如lists.forEach(...)


在这种情况下,“lists” 就是一个数组,所以没有什么意义。 - Pointy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接