Javascript 接受(对象或数组、迭代器)的函数出现问题

Javascript 接受(对象或数组、迭代器)的函数出现问题,javascript,Javascript,我想我最大的问题是关于参数“迭代器”。 我猜它接受一个函数。 我应该为该函数提供参数吗 // Call iterator(value, key, collection) for each element of collection. // Accepts both arrays and objects. _.each = function(collection, iterator) { if (typeof collection=='object') { for(let i

我想我最大的问题是关于参数“迭代器”。 我猜它接受一个函数。 我应该为该函数提供参数吗

// Call iterator(value, key, collection) for each element of collection.
// Accepts both arrays and objects.

_.each = function(collection, iterator) 
{
  if (typeof collection=='object') 
  {
    for(let i=0; i<Object.keys(collection).length; i++) 
    {
      iterator(collection[i],Object.keys(collection)[i],collection);
    }
  }
  else 
  {
    for(let i=0; i<collection.length; i++) 
    {
      iterator(collection[i],i,collection);
    }
  }
};
//为集合的每个元素调用迭代器(值、键、集合)。
//接受数组和对象。
_.each=函数(集合、迭代器)
{
if(集合类型=='object')
{
对于(让i=0;i两者,并将其称为一个迭代器而不是迭代器。这可能有助于避免与javascript迭代器混淆

iteratee是一个函数,将为您调用。您定义了该函数,
每个
将为集合中的每个项调用它。文档将告诉您函数的签名应该是什么样子。例如
下划线
将传递
(元素、索引、列表)
为每个项目添加函数。由您编写函数并决定如何处理这些参数

例如,Lodash:

_.forEach([1, 2], function(value) {
    console.log(value);
 });

iteratee是匿名函数,它只使用
参数。

Hello@elderen,欢迎使用Stackoverflow。请向我们提供代码并询问与此相关的具体问题。您的假设可能不正确-。但是,您可能没有谈论ES6中定义的迭代协议-我们可能非常喜欢一个库我们有自己的迭代器,它实际上是一个函数。或者是一个对象,但它需要不同的方法/签名。如果不确切知道你在说什么,很难说——请在你的问题中添加相关信息,如链接、文档或代码。“这可能有助于避免与javascript迭代器混淆。”尽管如此,我还是发现名称令人困惑-iteratee听起来像是您正在操作的当前元素。基本上是
for(someCollection的iteratee)
。相反,它实际上是操作(或其一部分)在该元素上执行-如果愿意的话,充当循环的主体。我不喜欢这里的名称是
iteratee
iterator
。但我也没有更好的建议-命名东西是一个问题。