资讯专栏INFORMATION COLUMN

柯里化理解与JS实现

Amio / 1409人阅读

摘要:什么是柯里化严格来说一个函数只有一个参数,将具有多个参数的函数转换为单参数函数链的方式,这就是。在中可以常见这样调用方式输出结果或者或者柯里化的作用闭包延迟执行参数复用中实现柯里化这是个柯里化的装饰器做个测试定义一个求和函数测试

什么是柯里化

严格来说一个函数只有一个参数,将具有多个参数的函数转换为单参数函数链的方式,这就是currying。后来演变成支持不定参数的函数链的形式流行起来。

</>复制代码

  1. // 在JS中可以常见这样调用方式
  2. add(1)(2)(3) // 6
  3. add() // 输出结果
  4. > 6
  5. // 或者
  6. add(1)(2)(3)() === 6
  7. // 或者
  8. add(1)
  9. add(2)
  10. add(3)
  11. add() === 6
柯里化的作用

闭包

延迟执行

参数复用

JS中实现柯里化 这是个柯里化的装饰器

</>复制代码

  1. function Currying(fn) {
  2. let args = [].slice.call(arguments,1);
  3. function g() {
  4. if(arguments.length > 0){
  5. args.push.apply(args, arguments)
  6. return g
  7. } else {
  8. return fn.apply(fn, args)
  9. }
  10. }
  11. return g
  12. }
做个测试

</>复制代码

  1. // 定义一个求和函数
  2. function add() {
  3. let count = 0
  4. if(arguments.length > 0) {
  5. for(let i = 0; i < arguments.length; i++){
  6. count += arguments[i]
  7. }
  8. }
  9. return count
  10. }
  11. // 测试
  12. const _add = Currying(add)
  13. _add(1)
  14. _add(2)
  15. _add(3)()
  16. // > 6

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/102728.html

相关文章

  • JS中的柯里

    摘要:作为函数式编程语言,带来了很多语言上的有趣特性,比如柯里化和反柯里化。个人理解不知道对不对延迟执行柯里化的另一个应用场景是延迟执行。不断的柯里化,累积传入的参数,最后执行。 作为函数式编程语言,JS带来了很多语言上的有趣特性,比如柯里化和反柯里化。 这里可以对照另外一篇介绍 JS 反柯里化 的文章一起看~ 1. 简介 柯里化(Currying),又称部分求值(Partial Evalu...

    Hancock_Xu 评论0 收藏0
  • JavaScript 函数式编程技巧 - 柯里

    摘要:作为函数式编程语言,带来了很多语言上的有趣特性,比如柯里化和反柯里化。在一些函数式编程语言中,会定义一个特殊的占位变量。个人理解不知道对不对延迟执行柯里化的另一个应用场景是延迟执行。不断的柯里化,累积传入的参数,最后执行。作为函数式编程语言,JS带来了很多语言上的有趣特性,比如柯里化和反柯里化。 这里可以对照另外一篇介绍 JS 反柯里化 的文章一起看~ 1. 简介 柯里化(Currying)...

    edgardeng 评论0 收藏0
  • JS函数式编程 - 函数组合柯里

    摘要:而在函数式编程中方法是独立于数据的,我们可以把上面以函数式的方式在写一遍你肯定会说,你是在逗我。对比两个生成新函数的过程,没有柯里化的相对而言就有一点啰嗦了。 我们都知道单一职责原则,其实面向对象的SOLID中的S(SRP, Single responsibility principle)。在函数式当中每一个函数就是一个单元,同样应该只做一件事。但是现实世界总是复杂的,当把现实世界映射...

    MingjunYang 评论0 收藏0
  • SegmentFault 技术周刊 Vol.16 - 浅入浅出 JavaScript 函数式编程

    摘要:函数式编程,一看这个词,简直就是学院派的典范。所以这期周刊,我们就重点引入的函数式编程,浅入浅出,一窥函数式编程的思想,可能让你对编程语言的理解更加融会贯通一些。但从根本上来说,函数式编程就是关于如使用通用的可复用函数进行组合编程。 showImg(https://segmentfault.com/img/bVGQuc); 函数式编程(Functional Programming),一...

    csRyan 评论0 收藏0
  • JS中bind方法函数柯里

    摘要:手贱搜了下函数柯里化,结果搜出腾讯的一篇反柯里化的文章中有趣的反柯里化技术,又牺牲不少脑细胞,赶紧吃饭,饿死了 原生bind方法 不同于jQuery中的bind方法只是简单的绑定事件函数,原生js中bind()方法略复杂,该方法上在ES5中被引入,大概就是IE9+等现代浏览器都支持了(有关ES5各项特性的支持情况戳这里ECMAScript 5 compatibility table),...

    wua_wua2012 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<