下午尝试自己实现柯里化,写出了如下代码:
这是代码截图: http://realrz.com/curry_not_working.png
function curry(f, params_count) {
if ([0, 1].includes(params_count)) return f;
const params = [];
let result_fuction = f(...params);
for (let i = 0; i < params_count; i++) {
result_function = function (val) {
params.push(val);
return result_function;
};
}
return result_function;
}
function add1(a, b) { return a + b }
function add2(a, b, c) { return a + b + c }
const curriedAdd1 = curry(add1, 2);
const curriedAdd2 = curry(add2, 3);
curriedAdd1(1)(2); // 没有得到 3
curriedAdd2(1)(2)(3); // 没有得到 6