有人可以帮助我了解此事件处理程序的结构吗?为什么它们有两个箭头功能?
const callAll = (...fns) => (...args) => fns.forEach(fn => fn && fn(...args));
最佳答案
这是一个高阶函数-一个返回另一个函数的函数。在这种特殊情况下,您的函数在获得函数列表时会返回一个新函数,该函数依次将这些函数应用于其参数。这个高阶函数通常被称为compose
或pipe
,因为它就是这样做的-通过一系列函数来运行参数,就像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)