小白兔的开发之路 — 自由行🏕 了解更多 / 现在报名

JavaScript Functional Programming:Currying

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,在这个被返回的函数里,会返回最终的结果。这里返回的就是把 greetingname 参数的值组织成了一个新的字符串。

这种函数用起来像这样:

greet('hello')('ninghao') // “hello, ninghao”
函数式编程 JavaScript

评论

用箭头函数之后,感觉作用域链显得特别清晰了

暂时没能理解 Currying 有什么好处,皓哥能举点实际例子吗?

嗯,行。先简单了解一下,我再收集一些实际的应用案例。



微信好友

用微信扫描二维码,
加我好友。



微信公众号

用微信扫描二维码,
订阅宁皓网公众号。



240746680

用 QQ 扫描二维码,
加入宁皓网 QQ 群。

统计

12081
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点