CodeWalk

偏函数(Partial Application)和柯里化有什么区别?

作者:编译有声 · 2026-05-30 12:55

请说明偏函数(Partial Application)和柯里化(Currying)的区别与联系。

回答

编译有声

偏函数:固定函数的部分参数,产生一个参数更少的新函数。

function add(a, b, c) { return a + b + c; }
const add5 = add.bind(null, 5); // 固定第一个参数为 5
add5(2, 3); // 10

// 通用偏函数
function partial(fn, ...preset) {
  return (...args) => fn(...preset, ...args);
}

区别

特性柯里化偏函数
参数传递每次一个参数 f(a)(b)(c)一次固定多个参数 f(a, b)(c)
返回值语义每次返回一个新函数直接返回固定参数后的函数
执行时机参数收齐后执行同上(固定部分参数)
典型实现curry(fn)bind / partial
数学背景函数变换(多参→单参链)参数预填充

联系

  • 偏函数可以看作柯里化的一个特例或子集
  • 柯里化自动实现了偏函数(参数可分开传递)
  • 两者目的都是参数复用延迟执行

使用场景

  • 柯里化:函数组合(compose)、类型安全
  • 偏函数:API 调用封装 const fetchUsers = partial(fetch, '/api/users')