gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 11:58:05 24 4
gpt4 key购买 nike

我正在努力熟悉 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]

因此,据目前的理解:

  • iteratee(又名 predicate)是一个函数对象,可以完成一些工作。在此示例中,mapForEach 接受一个 func 对象来处理 arr 元素,因此 func可以称为 iteratee,因此 multiplyBy 是一个 iteratee。在一般概念中,multiply 也可以被视为一个iteratee,因为它是执行基本工作的独立函数。
  • callback 是您提供给另一个函数 B 的函数 A,该函数 B 将由另一个函数调用(因此,另一个函数 B -- 说起来 -- "回调"函数 A) .在这个例子中,当 mapForEach 被调用时,在一个新的环境中执行,它回调 func 函数对象。所以 func 对象也可以称为 callback。但是,在相同的上下文中,mapForEach 也可以被认为是一个函数,当执行时,会回调 multiplyBy 函数,即 multiplyBy 也是一个回调
  • 函数工厂 我们调用一个函数来为我们做一些工作和/或返回一个值(即数组、对象、函数对象,等等……)。在我们的示例中,multiplyBy 是一个函数对象,当它被调用时,它返回(的副本)另一个具有 multiplier 的函数对象 (multiply) > 闭包中的参数。因此 multiplyBy 是一个工厂函数

我做对了所有这些吗,(或者我要疯了:-P)

最佳答案

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

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

multiplyBy 本身不是回调,传递给 mapForEachfunc 是。当您将 multiplyBy 传递给另一个回调它的方法时,它就变成了一个回调。

关于javascript - 理解 JavaScript 中的术语迭代器、回调、函数工厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37365813/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com