当前位置:首页 > JavaScript

js compose 实现

2026-02-01 09:36:14JavaScript

js compose 实现

js compose 实现

实现 JavaScript 的 compose 函数

compose 函数是函数式编程中的核心概念,用于将多个函数组合成一个函数,从右到左依次执行。以下是几种实现方式:

基础实现(ES5)

function compose() {
  var fns = Array.prototype.slice.call(arguments);
  return function (x) {
    return fns.reduceRight(function (acc, fn) {
      return fn(acc);
    }, x);
  };
}

ES6 简化版

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

支持异步函数的实现

const asyncCompose = (...fns) => async x => {
  let result = x;
  for (let i = fns.length - 1; i >= 0; i--) {
    result = await fns[i](result);
  }
  return result;
};

使用示例

const add5 = x => x + 5;
const multiply2 = x => x * 2;
const square = x => x * x;

const composedFn = compose(square, multiply2, add5);
console.log(composedFn(3)); // 输出: 256 (3+5=8, 8*2=16, 16*16=256)

实现要点

  • 参数收集:使用 rest 参数 ...fns 收集所有传入的函数
  • 执行顺序:通过 reduceRight 确保从右到左执行
  • 初始值:将输入值 x 作为初始值传递给第一个执行的函数

扩展实现(从左到右的 pipe)

const pipe = (...fns) => x => fns.reduce((acc, fn) => fn(acc), x);

标签: jscompose
分享给朋友:

相关文章

js实现验证码

js实现验证码

实现验证码的JavaScript方法 生成随机验证码 使用Math.random()生成随机字符串,结合数字和字母: function generateCaptcha() { const cha…

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js实现vue路由

js实现vue路由

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

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…