Currying 指的就是把一个接受多个参数的函数,搞成每次只接收一个参数的函数序列。
看个例子:
const greet = (greeting, name) => {
return `${greeting}, ${name}`
}
greet('hello', 'ninghao') // “hello, ninghao”上面的 greet 就是一个接收多个参数的函数。如果把它转换成 Currying 风格的函数,会像这样:
const greet = greeting => name => `${greeting}, ${name}`上面用了箭头函数,如果写成普通的函数应该像这样:
const greet = function(greeting) {
return function(name) {
return `${greeting}, ${name}`
}
}greet 是一个函数,它接收一个参数是 greeting,这个 greet 会返回一个函数,这个被返回的函数又会接收另一个参数:name,在这个被返回的函数里,会返回最终的结果。这里返回的就是把 greeting 与 name 参数的值组织成了一个新的字符串。
这种函数用起来像这样:
greet('hello')('ninghao') // “hello, ninghao” 函数式编程 JavaScript 



评论
用箭头函数之后,感觉作用域链显得特别清晰了
8 年 8 个月 以前
暂时没能理解 Currying 有什么好处,皓哥能举点实际例子吗?
8 年 8 个月 以前
嗯,行。先简单了解一下,我再收集一些实际的应用案例。
8 年 8 个月 以前