web-utils-super
Version:
前端函数库
25 lines (20 loc) • 760 B
JavaScript
/**
* @desc: 函数柯里化 是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术
* @param {Function} fn
* @return {Function | any}
*/
function curryIt(func, args) {
var arity = func.length;
var args = args || [];
return function () {
var _args = [].slice.call(arguments);
[].push.apply(_args, args);
// 如果参数个数小于最初的func.length,则递归调用,继续收集参数
if (_args.length < arity) {
return curryIt.call(this, func, _args);
}
// 参数收集完毕,则执行func
return func.apply(this, _args);
};
}
module.exports = curryIt;