当前位置:首页 > 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实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…

js实现路由

js实现路由

js实现路由的方法 在JavaScript中实现路由功能可以通过多种方式完成,以下是几种常见的方法: 使用原生JavaScript实现路由 通过监听window.onhashchange事件来实现基…

js验证码的实现

js验证码的实现

验证码的基本实现原理 验证码(CAPTCHA)的核心目标是区分人类用户和自动化程序。JavaScript可用于生成或验证客户端验证码,但需注意纯前端验证可能被绕过,通常需结合后端验证。 纯前端验证码…

js计算器的实现

js计算器的实现

实现基础结构 HTML部分需要创建计算器的基本框架,包含显示区域和按钮。使用<div>容器包裹整个计算器,内部设置一个显示屏和多个按钮。 <div class="calculato…

js实现上传图片

js实现上传图片

使用HTML5的File API实现图片上传 HTML5的File API允许通过JavaScript访问用户选择的文件。需要创建一个文件输入元素,并监听其change事件。 <input t…