网易面试题: 实现一个无限累加函数: sum(1,2)(3,4)(5)(); 考点: 函数科里化 递归定义出口:
收集参数,根据参数不同的情况采取不同的策略
function curry(fn
, ...args1
) {
return function (...args2
) {
let allArgs
= [...args1
, ...args2
];
if(args2
.length
=== 0) {
return fn(...allArgs
);
} else {
return curry(fn
, ...allArgs
);
}
}
}
function sum(...args
) {
let res
= 0;
for(let i
of args
) {
res
+= i
;
}
return res
;
}
let add
= curry(sum
);
console
.log(add(1, 2)(3)(4)(5, 6)(7)());
转载请注明原文地址: https://lol.8miu.com/read-28013.html