JavaScript 合成函数

合成函数指的是将多个函数合成为一个函数。

在 JS 函数式编程中,你可以经常看到如下表达式运算。

a(b(c(x)))

这看起来很不雅观,为了解决函数多层调用的嵌套问题,我们需要用到函数合成。其语法格式如下:

const f = compose(a, b, c)  // 合成函数 f(x)

我们使用昨天写的 如何在 JavaScript 中使用管道(管道运算符)? 中的示例:

const compose = f => g => x => f(g(x))

const toLowerCase = (str) => str.toLowerCase()
const addHyphens = (str) => str.replace(/\s/g, '-')

const title = 'Front End Interview'
compose(toLowerCase)(addHyphens)(title) // "front-end-interview"

正如你所看到的,compose 函数的作用就是将两个函数合成为一个。compose 将两个函数串联起来执行,toLowerCase 函数返回的结果会传递给下一个函数 addHyphens 中作为参数。

另一个示例:

// 从右到左组合函数
const compose = (...fns) => x => fns.reduceRight((y, f) => f(y), x)

const lowercase = (str) => str.toLowerCase()
const capitalize = (str) => `${str.charAt(0).toUpperCase()}${str.slice(1)}`
const reverse = (str) => str.split('').reverse().join('')

const fn = compose(reverse, capitalize, lowercase)

// 我们将按顺序执行 lowercase,capitalize 和 reverse
fn('Hello World') //  'dlrow olleH'

更多资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值