有人可以帮助我了解此事件处理程序的结构吗?为什么它们有两个箭头功能?

const callAll = (...fns) => (...args) => fns.forEach(fn => fn && fn(...args));

最佳答案

这是一个高阶函数-一个返回另一个函数的函数。在这种特殊情况下,您的函数在获得函数列表时会返回一个新函数,该函数依次将这些函数应用于其参数。这个高阶函数通常被称为composepipe,因为它就是这样做的-通过一系列函数来运行参数,就像unix管道一样(就像grep | sort | uniq一样)

请注意,您的示例并非特别习惯,写一个更好的方法是

pipe = (...fns) => x => fns.reduce((x, f) => f(x), x)


可以像



pipe = (...fns) => x => fns.reduce((x, f) => f(x), x)


upper = s => s.toUpperCase()
reverse = s  => [...s].reverse().join('')
bang = s => s + '!'

convert = pipe(reverse, upper, bang)

result = convert('hello')

console.log(result)

09-28 13:55