实现calculate函数, 满足以下结果(函数柯里化)
calculate(3,5) // 返回8
calculate(3)(5) // 返回8
function calculate() {
const args = Array.prototype.slice.call(arguments);
const fn = function () {
var arg_fn = Array.prototype.slice.call(arguments);
return calculate.apply(null, args.concat(arg_fn));
}
fn.valueOf = function () {
return args.reduce((a, b) => a + b);
}
return fn
}
let s = calculate(1)(2)(3)(4)(5);
console.log(Number(s))
function add(...args1) {
let allArgs = [...args1]
function fn(...args2) {
if (!args2.length) return fn.toString()
allArgs = [...allArgs, ...args2]
return fn
}
fn.toString = function () {
return allArgs.reduce((pre, next) => pre + next)
}
return fn
}
console.log(add(1)(2)(3)())
console.log(add(1, 2)(3)())