function pipe(...fns) {
const fns_length = fns.length
return (...vals) => {
let i = 1
let result = fns[0].apply(null, vals)
while(i < fns_length) result = fns[i++](result);
return result
}
}
function log(val) {
console.log(val)
return val
}
function addOne(val) {
log(val + 1)
return val + 1
}
let result = pipe(log, addOne, addOne)(5) // 5 6 7
console.log(result) // 7
实现了从右到左的数据流