【代码】JS将多个普通函数转换为组合函数

前言

组合函数:通过调用一个函数实现按序调用多个普通函数

源代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// 原函数
var fn1 = function (x1, x2) {return 1}
var fn2 = function (y) {return 2}
var fn3 = function (z) {}

// 组合函数转换工具函数
function composeTool(...fns) {
return function (...args) {
// 遍历所有函数
for (var i = 0; i < fns.length; i++) {
if (i === 1) {
// 先执行第一个函数,得到返回值
var result = fns[0].apply(this, args);
} else {
// 再将返回值丢给接下来的其他函数并执行
fns[i].apply(this, [result]);
}
}
}
}

// 通过工具函数将多个普通函数转换为组合函数
var composeFn = composeTool(fn1, fn2, fn3);

// 调用原函数
fn3(fn2(fn1(1, 2)));

// 调用组合函数
composeFn(1, 2);

完成