了解JavaScript中的迭代对象、回调、函数工厂等术语
我正试图稍微熟悉一下JavaScript术语。我想我对术语迭代对象、回调和函数工厂感到困惑 让我举一个愚蠢的例子:了解JavaScript中的迭代对象、回调、函数工厂等术语,javascript,callback,factory,terminology,iterate,Javascript,Callback,Factory,Terminology,Iterate,我正试图稍微熟悉一下JavaScript术语。我想我对术语迭代对象、回调和函数工厂感到困惑 让我举一个愚蠢的例子: //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
//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]
//此函数接受一个数组,然后返回一个
//包含由func更改的第一个数组的元素
函数mapForEach(arr,func){
var newArr=[];
对于(变量i=0;i
因此,据我目前的理解:
- iteratee(又称谓词)是一个执行某些工作的函数对象。在本例中,
接受一个mapfeach
对象来处理func
元素,因此arr
可以称为iteratee,因此func
是一个iteratee。在一般概念中,multiplyBy
也可以被视为一个迭代对象,因为它是一个执行基本工作的独立函数multiply
- callback是一个函数a,您将其交给另一个函数B,由另一个函数调用(因此,另一个函数B--排序为--“回调”函数a)。在本例中,当调用
时,将在一个新环境中执行,在该环境中调用mapForEach
函数对象。因此func
对象也可以称为回调。但是,在相同的上下文中,func
也可以被视为一个函数,当执行时,它会回调mapForEach
函数,即multilyby
也是一个回调multilyby
- 函数工厂我们调用一个函数,该函数为我们做一些工作和/或返回一个值(即数组、对象、函数对象等等)。在我们的示例中,
是一个函数对象,当调用它时,它返回另一个函数对象(multiplyBy
)的副本,该函数对象的闭包中有multiply
参数。因此,multiplier
是一种工厂功能倍增
我做得对吗(或者我疯了):-p)Iteratee不是一个只做一些工作的函数。它必须对一个iterable集合做一些工作,例如数组。谓词是接受参数并返回true/false的函数,例如,谓词用于筛选iterable集合。因此,iteratee和predicate肯定是不同的 函数工厂不仅仅是一个执行某些工作并返回值的函数。它是一个能够基于提供的参数创建其他函数族的函数
multiplyBy
本身不是回调,传递给mapForEach
的func
是回调。当您将multiplyBy
传递给另一个回调它的方法时,它将成为回调 Iteratee不是一个只做一些工作的函数。它必须对一个iterable集合做一些工作,例如数组。谓词是接受参数并返回true/false的函数,例如,谓词用于筛选iterable集合。因此,iteratee和predicate肯定是不同的
函数工厂不仅仅是一个执行某些工作并返回值的函数。它是一个能够基于提供的参数创建其他函数族的函数
multiplyBy
本身不是回调,传递给mapForEach
的func
是回调。当您将multiplyBy
传递给另一个回调它的方法时,它将成为回调