当前位置:首页 > JavaScript

js实现compose

2026-03-14 02:41:13JavaScript

实现 compose 函数

在 JavaScript 中,compose 函数用于将多个函数组合成一个函数,从右到左依次执行。以下是几种实现方式:

js实现compose

使用 reduce 实现

const compose = (...fns) => x => fns.reduceRight((acc, fn) => fn(acc), x);

这种方式通过 reduceRight 从右到左依次执行函数,将前一个函数的返回值作为下一个函数的参数。

js实现compose

递归实现

const compose = (...fns) => {
  if (fns.length === 0) return x => x;
  if (fns.length === 1) return fns[0];
  return fns.reduce((a, b) => (...args) => a(b(...args)));
};

递归实现更灵活,支持处理多个参数的情况,同时保留了函数组合的惰性求值特性。

使用 Promise 支持异步

const compose = (...fns) => x => fns.reduceRight((acc, fn) => acc.then(fn), Promise.resolve(x));

这种实现支持异步函数,每个函数返回一个 Promise,确保异步操作按顺序执行。

使用示例

const add = x => x + 1;
const multiply = x => x * 2;
const square = x => x * x;

const composed = compose(square, multiply, add);
console.log(composed(2)); // 输出: 36 (先执行 add(2) => 3, 再 multiply(3) => 6, 最后 square(6) => 36)

注意事项

  • 函数组合的顺序是从右到左,即最后一个函数最先执行。
  • 确保每个函数的返回值类型与下一个函数的参数类型兼容。
  • 如果函数可能抛出异常,需要在组合函数中处理错误。

标签: jscompose
分享给朋友:

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 或直接使用 window.location 实现页面跳转,适用于普通跳转或带参数的 URL。 // 方…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js 实现滚动

js 实现滚动

实现滚动的方法 使用 window.scrollTo() window.scrollTo() 方法可以滚动到文档中的特定位置。可以指定 x 和 y 坐标,或者使用平滑滚动的选项。 // 滚动到指定位…