function add(a, b, c, d) {
return a + b + c + d;
}
function f1(fn) {
var _arg = [].slice.call(arguments, 1);
return function () {
var newArg = _arg.concat([].slice.call(arguments, 0))
return fn.apply(this, newArg);
}
}
//
console.log(f1.apply(this, [add, 56, 57, 58, 1])());
console.log(f1.apply(this, [add, 1, 2, 3])(5));
// var newAdd = f1(add)
// console.log(newAdd(3, 4, 5, 6));
// console.log(newAdd(3, 4, 5, 6));
function Curr(fn, length) {
var length = length || fn.length;//fn.length 打印的是这个函数的形参个数
return function () {
if (arguments.length < length) {
var combined = [fn].concat([].slice.call(arguments, 0))
return Curr(f1.apply(this, combined), length - arguments.length)
} else {
return fn.apply(this, arguments);
}
};
}
var newAdd = Curr(add)
console.log(newAdd(1, 2, 3, 4));
console.log(newAdd(3)(2)(3)(4));
console.log(newAdd(3,4)(2)(3));
js函数柯里化
最新推荐文章于 2024-05-23 10:42:32 发布