Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
了解JavaScript中的迭代对象、回调、函数工厂等术语_Javascript_Callback_Factory_Terminology_Iterate - Fatal编程技术网

了解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

我正试图稍微熟悉一下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 = 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
    元素,因此
    func
    可以称为iteratee
    ,因此
    multiplyBy
    是一个iteratee
    。在一般概念中,
    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
传递给另一个回调它的方法时,它将成为回调