柯里化(Currying)

更新于 阅读 3

柯里化(Currying)是一种关于函数的高阶技术,广泛运用于函数式编程中。

柯里化是一种函数的转换,它是指将一个函数从可调用的 f(a, b, c) 转换为可调用的 f(a)(b)(c)或者f(a, b)(c)等方式,也就是只有在传递的参数个数达到函数规定的参数数量后函数才会执行。

函数参数数量通过length属性判断,如下:

function fn(a, b){}; console.log(fn.length); // 结果:2

下面是实现:

function curry(func) { return function curried(...args) { if (args.length >= func.length) { // 如果参数数量够了就执行 return func.apply(this, args); } else { return function(...args2) { return curried.apply(this, args.concat(args2)); } } }; }

使用方式:

function sum(a, b) { return a + b; } const cSum = curry(sum); console.log(cSum(1)(2)); console.log(cSum(1,2));

在线测试地址