Skip to content

compose-tiny

263 字小于 1 分钟

2025-10-29

compose-tiny

一个非常小巧且快速的组合函数。

/**
 * fn 是一个高阶函数,用于从右到左依次执行一组函数(即函数组合,compose)。
 * 它接收任意数量的函数作为参数,并返回一个新的函数。
 * 当调用返回的函数时,传入的参数会依次经过这些函数处理,最终返回结果。
 *
 * 示例:
 *   const add = x => x + 1;
 *   const mul = x => x * 2;
 *   const composed = fn(mul, add); // 先 add 再 mul
 *   console.log(composed(3)); // 输出 8,因为 (3 + 1) * 2 = 8
 */
const fn =
	(...c) => // 接收一组函数 c,作为待组合的函数列表
	(...a) => { // 返回一个新函数,接收初始参数 a
		let i = c.length - 1; // 从最后一个函数开始执行(从右到左)
		a = c[i](...a); // 先用初始参数 a 调用最后一个函数
		while (i--) a = c[i](a); // 依次向前调用每个函数,传入上一个函数的返回值
		return a; // 返回最终结果
	};