//函数柯里化 这个可以理解
// curry = fn => {
// let arr = [];//保存之前输入的参数
// judge = (...args)=>{
// if(!args[args.length-1]){
// return fn(arr);
// }else{
// arr.push(...args);
// return judge;//返回一个表达式 调用才会执行
// }
//
// };
// return judge;
// }
//函数柯里化
curry = fn => judge = (...args)=>{
return !args[args.length-1]?fn(args):(...arg)=>judge(...args,...arg);//judge立即执行 调用自身 这不会死循环吗?
};
testCurry = (args)=>{
args.pop();//去掉最后一个参数null
if(args.length<1){
return;
}
let sum = args.reduce((s,n)=>{
return s+n;
},0);
console.log('参数',args);
console.log('sum',sum);
return sum;
};
OnClick =()=>{
console.log('执行了这里 OnClick');
let one = this.curry(this.testCurry)(1);
let two = one(2)(3)(4)(5);
let three = two(6,6,6,6);
three(null);
};
请问第二个函数怎么理解 她是怎么保存之前输入的参数的?
求详细解答 谢谢
慕少森
相关分类