ECMAScript 2019 中使用函数 currying 来消除重复代码
在前端开发中遇到重复代码是很常见的问题,除了可以使用函数封装来避免,还可以使用函数 currying 来进一步消除重复代码。在 ECMAScript 2019 中,可以使用箭头函数的方式实现函数 currying。
什么是函数 currying?
函数 currying 是一种将函数转化为接收一系列单一参数的函数序列的技术。它能够让你重用函数,并使代码更加健壮。
对于一个函数 f(x, y),函数 currying 可以将其转化为接收单个参数的函数:
const fCurried = x => y => f(x, y);
这个新函数 fCurried 接收一个参数 x,然后返回一个接收单个参数 y 的函数。当我们传入第二个参数 y 时,这个序列化的函数就会像原来的 f(x, y) 一样返回结果。
写一个简单的函数 currying 实现
下面我们演示一个简单的函数 currying 的实现。
-- -------------------- ---- ------- ----- ----- - -------- ---- - ------ -------- ---------------- - -- ------------ - ---------- - ------ -------- -- - ------ ------------------- --------- --------------- -- - ------ -------------- ------ -- --
这个 curry 函数接收一个函数 fn,然后返回一个新的函数 curried。在 curried 函数中我们首先比较传递的参数个数和接收参数的个数,如果传递的参数个数小于接收参数的个数,就返回一个新的函数,否则就执行原始函数 fn。
使用函数 currying 来消除重复代码
我们可以使用函数 currying 来实现重复代码的消除,下面是一个具体的例子。
const add = (a, b, c) => a + b + c; const addCurried = curry(add); addCurried(1)(2)(3); // 6 addCurried(1, 2)(3); // 6 addCurried(1)(2, 3); // 6
在这个例子中,我们定义了一个 add 函数,它接收三个参数并返回它们的总和。我们然后使用 curry 函数创建了一个新的 addCurried 函数来实现函数 currying。
现在我们可以使用 addCurried 来传递单一参数,而不是三个参数。这可以让我们更轻松地组合和复用函数。
结论
函数 currying 是一个有用的技术,它能够让你更灵活地使用函数,并避免冗长和重复的代码。在 ECMAScript 2019 中,我们可以使用箭头函数的方式来实现函数 currying。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6775ed206d66e0f9aa07460f