function add() {
const args = [...arguments];
const fn = function() {
const args2 = args.concat(...arguments);
return add.apply(null, args2);
}
fn.valueOf = function() {
return args.reduce((a, b) => a + b);
}
return fn;
}
const currying = (fn, ...args) => {
if(args.length >= fn.length) {
return fn(...args);
} else {
return (...args2) => {
return currying(fn, ...args, ...args2);
}
}
}
const adding = (...args) => args.reduce((pre, cur) => pre + cur, 0);
//参数不确定
const currying = (fn) => {
let args = [];
return function temp(...newArgs) {
if (newArgs.length) {
args.push(...newArgs);
return temp;
} else {
const val = fn.apply(this, args);
args = [];
return val;
}
};
};
var myAdd = currying(adding)
myAdd(1)(2)() // 3
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。