求教!有关函数式编程compose疑问

发布于 2022-09-11 22:58:57 字数 528 浏览 25 评论 0

才学习函数式编程,在网上看见别人对compose方法的实现

function compose(...args) {
  let length = args.length
  let count = length - 1
  let result
  return function f1(...arg1) {
    result = args[count].apply(this, arg1)
    if (count <= 0) {
      count = length - 1
      return result
    }
    count--
    return f1.call(null, result)
  }
}

对这段代码有疑惑

result = args[count].apply(this, arg1)

为什么要改变args[count]的this指向,compose处理的不是纯函数吗?apply是为了解决什么而存在的。求举例说明!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

葬シ愛 2022-09-18 22:58:57

纯函数里难道不能有 this 么… Array.prototype.map 不服…

凉世弥音 2022-09-18 22:58:57

compose 函数本来就是为了把多个函数合成一个函数:

const com = compose(
  console.log,
  o => o.b,
  o => o.a
)

从输入里面取出 a, 然后在结果里取出 b, 然后再输出

com({
  a: {
    b: 1
  }
})

结果是 1

不去传递这个 this 的话,compose 参数里用到 this 的地方就有问题

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文