什么是函数柯里化
函数柯里化(Currying)又称部分求值。它的核心逻辑是将一个接受多个参数的函数,转换成一系列只接受单个参数的函数。每次调用返回一个新函数,直到所有参数集齐才真正执行计算。中间过程依靠闭包来暂存已传入的参数。
从基础示例看原理
先看个简单的加法场景。普通写法如下:
function add(x, y) {
return x + y;
}
add(1, 2); // 3
用柯里化改写后,调用方式变成了链式:
function add(x) {
return function(y) {
return x + y;
};
}
add(1)(2); // 3
可以看到,第一次调用传入第一个参数后,并没有直接计算结果,而是返回了一个新函数去处理剩余参数。使用箭头函数可以让结构更清晰:
const add = x => y => x + y;
add(1)(2); // 3
封装通用版本
在实际开发中,我们很少手动写这种嵌套函数,通常会封装一个通用的柯里化工具。下面是一个基础版本:
const currying = function (fun) {
// arguments 是类数组,需转为真数组
const args = Array.prototype.slice.call(arguments, 1);
return function () {
const _args = ...();
fun.(, args.(_args));
};
};
() {
result = args.( total + item, );
.(result);
}
_add = (add, , );
(, );

