美文网首页
谈谈js里的Currying

谈谈js里的Currying

作者: 易推倒DE小狼 | 来源:发表于2019-06-29 17:14 被阅读0次

第一次听说currying是在一年前的一个群聊里,看过几次文章愣是没搞懂其用途。遂想自己整理一篇文档供日后翻阅。
先来看wiki上的定义:

在计算机科学中,"柯里化"是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。

下面是一个简单的柯里化的例子:

function curriedAdd (x) {
  return function(y) {
    return x + y
  }
}
curriedAdd(2)(3)    // 5

那么柯里化的使用场景有哪些呢?

  1. 参数复用
    固定不变的参数,实现参数复用是 Currying 的主要用途之一。
  2. 延迟执行
    延迟执行也是 Currying 的一个重要使用场景,同样 bind 和箭头函数也能实现同样的功能。
    在前端开发中,一个常见的场景就是为标签绑定 onClick 事件,同时考虑为绑定的方法传递参数。

总结:

  1. Currying 在 JavaScript 中是“低性能”的,但是这些性能在绝大多数场景,是可以忽略的。
  2. Currying 的思想极大地助于提升函数的复用性。
  3. Currying 生于函数式编程,也陷于函数式编程。假如没有准备好写纯正的函数式代码,那么 Currying 有更好的替代品。

参考:

  1. wiki currying
  2. 大佬,JavaScript 柯里化,了解一下?

PS:因作者能力有限,固没有对currying作更深层次的探究,只是摘抄了一些其他文章的提炼的文字,如果对currying感兴趣的同学可以自行google相关文章获得更多信息。编程小白推荐看张鑫旭的这篇JS中的柯里化,非常浅显易懂,还很有趣。

相关文章

  • 谈谈js里的Currying

    第一次听说currying是在一年前的一个群聊里,看过几次文章愣是没搞懂其用途。遂想自己整理一篇文档供日后翻阅。先...

  • [译]JavaScript中的函数柯里化

    原文 Currying in JS 函数柯里化 函数柯里化以Haskell Brooks Curry命名,柯里化是...

  • js柯里化

    标签: js柯里化 js柯里化 柯里化是什么在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成...

  • JS bind/currying 柯里化

    函数扩展bind方法 在ES5开始使用的,也就是ie9一下不支持;函数扩展bind使用如下:function() ...

  • 函数的柯里化和反柯里化

    一 柯里化(currying) 柯里化(currying)又称部分求值。一个currying的函数首先会接受一些参...

  • JS_函数柯里化

    JS_函数柯里化 与函数绑定密切相关的主体是函数柯里化(function currying),它用于创建已经设置好...

  • js中函数柯里化(currying)

    函数柯里化就是创建已经设置单个参数或者多个参数的函数,函数变为接受一个参数,返回一个值, 1,实现 默认下为参数复...

  • Swift 进阶

    swift新元素 柯里化(Currying) Swift 里可以将方法进行柯里化(Currying),这是也就是把...

  • Swift-27个关键字,助力开发(篇幅有点长)

    1、柯里化(Currying) Swift 里可以将方法进行柯里化 (Currying),也就是把接受多个参数的方...

  • JS柯里化

    柯里化简介 js柯里化(currying)又译为卡瑞化或加里化,是把接受多个参数的函数,变为可接受多次调用的函数,...

网友评论

      本文标题:谈谈js里的Currying

      本文链接:https://www.haomeiwen.com/subject/mtlpcctx.html