柯里化函数通过闭包保存已传入参数实现复用,每次调用返回新函数并累积参数,参数数量达fn.length时执行fn.apply(this, args),支持多参数传入与this绑定。
柯里化函数通过闭包保存已传入的参数,让后续调用能“记住”之前传的值,从而实现参数复用。
每次调用柯里化函数时,它不立即执行原函数,而是返回一个新函数。这个新函数内部形成闭包,把之前传入的参数存起来,等待后续参数补全。
add(1)(2)(3) 中,add(1) 返回的函数记住了 1;(2) 再记下 2;最后 (3) 拿到全部参数并计算柯里化函数通常判断当前收集的参数数量是否达到原函数要求的形参个数。没满就继续返回函数;满了就执行原逻辑。
fn.length 获取目标函数期望参数个数fn.apply(this, args) 执行,否则返回自身(带已有参数的闭包)实际柯里化常允许一次传多个参数(如 add(1, 2)(3) 或 add(1)(2, 3)),靠闭包维护统一参数队列。
如果原函数依赖 this,柯里化过程需确保闭包内正确保留调用时的上下文。
bind 或箭头函数维持 this 指向thisArg,每次执行都显式传入curry(fn).call(obj, 1)(2) 要让 fn 内部的 this 是 obj