【发布时间】:2015-06-29 14:15:54
【问题描述】:
我正在尝试编写一个利用回调的函数来模仿这种行为:
var fullName = function (firstName, lastName) {
return firstName + ' ' + lastName;
};
var michaelName = partial(fullName, 'Michael');
michaelName('Moore'); // 'Michael Moore'
michaelName('Jackson'); // 'Michael Jackson'
我被困了一段时间,试图编写一个名为partial 的函数,该函数将回调函数fullName,但最终让它工作但我不确定它是否a)正确和b)到底发生了什么。
var partial = function(callback, firstName) {
var innerFunction = function(lastName) { //I declared an inner function in order to create a closure of the variable lastName
return callback(firstName, lastName); //The closure is completed (or is it only then created?) by returning the function argument named callback taking firstName and lastName as arguments
};
return innerFunction; //the function partial will finally return the closure, function innerFunction
}
var michaelName = partial(fullName, 'Michael');
console.log(michaelName('Moore')); //Michael Moore
我在定义函数partial 时所写的是编写回调的一般模式吗?如果没有,有人可以向我展示/指出我可以在哪里学习这种模式吗?有没有其他方法可以重构这个回调,让它更干净?我不确定是否需要创建一个新的innerFunction,但是当我这样做时,我终于让行为按预期工作了。我在 cmets 中对代码的推理是否准确?有人介意单步执行我的代码并进一步解释正在发生的事情,为什么callback 从innerFunction 返回以及为什么partial 返回innerFunction 而不是callback?非常感谢。
【问题讨论】:
标签: javascript function functional-programming higher-order-functions partial-application