了解 JavaScript 中的术语迭代器、回调、函数工厂

Understanding the terms iteratee, callback, function factory in JavaScript

我正在努力熟悉 JavaScript 术语。我想我对术语 iterateecallbackfunction factory

感到困惑

让我用下面这个愚蠢的例子:

//this function accept an array and then  returns a new array that
//contains the elements of the first array altered by func
function mapForEach(arr, func) {
   var newArr = [];
   for (var i = 0; i < arr.length; i++) {
    newArr.push(func(arr[i]));
  }
 return newArr;
}

//this function multiplies two numbers
var multiply = function (a, b) {
 console.log(a * b);
};

//this is a silly function that passes a multiplier as the first
//argument of the multiply function
var multiplyBy = function(multiplier) {
 return multiply.bind(this, multiplier);
};

var arr = [1, 2, 3];

mapForEach(arr, multiplyBy(3)); //[6, 10, 20]

所以,我的到目前为止的理解:

我做对了吗,(或者我快疯了:-P)

Iteratee 不是一个只做一些工作的函数。它必须对一个可迭代集做一些工作,例如一个数组。谓词是一个接受参数和 returns true/false 的函数,谓词例如用于过滤可迭代集。因此,iteratee 和 predicate 绝对不是一回事。

函数工厂不仅仅是一个做一些工作的函数和 returns 一个值。它是一个能够根据提供的参数创建一系列其他函数的函数。

multiplyBy 不是回调 "per se",传递给 mapForEachfunc 是。当您将 multiplyBy 传递给另一个回调它的方法时,它会成为回调。