ira*_*ira 1 javascript factory terminology callback iterate
我正在努力熟悉 JavaScript 术语。我想我对iteratee、callback和function 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]
Run Code Online (Sandbox Code Playgroud)
所以,到目前为止,我的理解是:
mapForEach接受一个func对象来对arr元素做一些工作,所以func可以称为iteratee,因此multiplyBy是一个iteratee。在一般概念中,multiply也可以将迭代器视为执行基本工作的独立函数。mapForEach被调用时,在一个新环境中执行,在那里它回调func函数对象。所以func对象也可以称为回调。然而,在同样的情况下,mapForEach也可以看作是一个函数,在执行的时候,回调的multiplyBy功能,即multiplyBy是一个回调过。multiplyBy是一个函数对象,当它被调用时,它返回(一个副本)另一个在其闭包multiply中有multiplier参数的函数对象()。因此multiplyBy是一个工厂函数。我做对了所有这些吗,(或者我疯了:-P)
Iteratee 不是一个只做一些工作的函数。它必须在一个可迭代集上做一些工作,例如一个数组。谓词是一个函数,它接受一个参数并返回真/假,例如,谓词用于过滤可迭代集。因此, iteratee 和 predicate 绝对不一样。
函数工厂不仅仅是一个做一些工作并返回一个值的函数。它是一个能够根据提供的参数创建一系列其他函数的函数。
这multiplyBy不是“本身”的回调,func传递给的mapForEach是。将multiplyBy成为当你把它传递给调用它后面的另一种方法的回调。
| 归档时间: |
|
| 查看次数: |
2657 次 |
| 最近记录: |