函数柯里化(function currying)及部分求值

函数柯里化(function currying)
currying又称部分求值。一个currying的函数首先会接受一些参数,接受了这些参数之后,该函数并不会立即求值,而是继续返回另外一个函数,刚才传入的参数在函数形成的闭包中被保存起来。待到函数被真正需要求值的时候,之前传入的所有参数都会被一次性用于求值

        var currying = function( fn ){
            var args = [];

            return function(){
              if ( arguments.length === 0 ){
                  return fn.apply( this, args );
              }else{
                  [].push.apply( args, arguments );
                  return arguments.callee;
              }
            }

        };

        var cost = (function(){
            var money = 0;

            return function(){
              for ( var i = 0, l = arguments.length; i < l; i++ ){
                  money += arguments[ i ];
              }
              return money;
            }

        })();

        var cost = currying( cost );    // 转化成currying函数

        cost( 100 );    // 未真正求值
        cost( 200 );    // 未真正求值
        cost( 300 );    // 未真正求值
        alert ( cost() );     // 求值并输出:600

摘自《javascript设计模式与开发实践》

相关推荐

  1. 函数(function currying)部分

    2024-03-10 22:00:01       47 阅读
  2. 函数 剖析

    2024-03-10 22:00:01       60 阅读
  3. react diffing算法函数

    2024-03-10 22:00:01       42 阅读
  4. 手写函数示例

    2024-03-10 22:00:01       23 阅读
  5. 函数式编程】和偏函数

    2024-03-10 22:00:01       39 阅读
  6. 前端

    2024-03-10 22:00:01       25 阅读
  7. Python之函数进阶-

    2024-03-10 22:00:01       37 阅读
  8. 一文了解什么是函数

    2024-03-10 22:00:01       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-10 22:00:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-10 22:00:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-10 22:00:01       82 阅读
  4. Python语言-面向对象

    2024-03-10 22:00:01       91 阅读

热门阅读

  1. vue中常用的指令和自定义指令

    2024-03-10 22:00:01       40 阅读
  2. 打印前端代码

    2024-03-10 22:00:01       46 阅读
  3. [leetcode] 283. 移动零

    2024-03-10 22:00:01       45 阅读
  4. 我耀学IT—day06-导航栏

    2024-03-10 22:00:01       34 阅读
  5. 用spark读取及存储数据

    2024-03-10 22:00:01       45 阅读
  6. Gson(List<Object>转String 、String转List<Object>)

    2024-03-10 22:00:01       43 阅读
  7. 手机中常用的传感器

    2024-03-10 22:00:01       41 阅读
  8. vuej介绍

    2024-03-10 22:00:01       49 阅读
  9. 常见的排序算法-(字解版)

    2024-03-10 22:00:01       44 阅读
  10. 基于动态内存设计的通讯录

    2024-03-10 22:00:01       38 阅读
  11. 分布式全局唯一ID,我这就告诉你怎么搞!

    2024-03-10 22:00:01       48 阅读
  12. NOIP 2018 普及组初赛试题及解析

    2024-03-10 22:00:01       46 阅读