// 方案一,简单的循环 constcompose = (...args) => val => { let ret = val for (let i = args.length; i > 0; i--) { const fn = args[i - 1] ret = fn(ret) } return ret }
// 方案二,上面的循环不就是reduce吗 constcompose2 = (...args) => val => { return args.reduceRight((a, b) => { returnb(a) }, val) }
// 测试 constf1 = v => v + '_f1' constf2 = v => v + '_f2' constf3 = v => v + '_f3'