js currying function All In One
js currying function All In One
js 实现 (5).add(3).minus(2) 功能
例: 5 + 3 - 2,结果为 6
https://stackoverflow.com/questions/36314/what-is-currying
1. normal function
function add (a, b) {
  return a + b;
}
add(3, 4);
// 7
2. currying function
function add (a) {
  return function (b) {
    return a + b;
  }
}
add(3)(4);
// 7
// OR
var add3 = add(3);
// f()
add3(4);
// 7
自适应参数长度的 curry 函数
https://javascript.info/currying-partials
function curry(func) {
  return function curried(...args) {
    if (args.length >= func.length) {
      return func.apply(this, args);
    } else {
      return function(...args2) {
        return curried.apply(this, args.concat(args2));
      }
    }
  };
}
demos
const log = console.log;
function sum(a, b, c) {
  return a + b + c;
}
const curriedSum = curry(sum);
log( curriedSum(1, 2, 3) );
 // 6, still callable normally
log( curriedSum(1)(2,3) );
// 6, currying of 1st arg
log( curriedSum(1)(2)(3) );
 // 6, full currying
refs
xgqfrms 2012-2020
www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!
js currying function All In One的更多相关文章
- js 深入原理讲解系列-currying function
		js 深入原理讲解系列-currying function 能看懂这一题你就掌握了 js 科里函数的核心原理 不要专业的术语,说人话,讲明白! Q: 实现 sum 函数使得以下表达式的值正确 cons ... 
- js currying & js 科里化
		js currying & js 科里化 var test = ( function (a){ console.log(`a2 =`, a);// 1 // console.log(`b2 = ... 
- JS 关于(function( window, undefined ) {})(window)写法的理解
		JS 关于(function( window, undefined ) {})(window)写法的理解 [网络整理] (function( window, undefined ) {})(windo ... 
- js小记 function 的 length 属性
		原文:js小记 function 的 length 属性 [1,2,3]., ,这个略懂js的都知道. 但是 eval.length,RegExp.length,"".toStr ... 
- js中function的与众不同
		js中function的与众不同在于可以被调用 
- JS里面function和Function的区别
		js里Function 与 function的不一样的,不仅仅是大小写的问题. 简单点说:大写的Function是一个类 ,而小写的function是一个对象. Function是一个构造器,func ... 
- js arrow function return object
		js arrow function return object bug filterData: { type: Object, default: () => {}, required: true ... 
- how to remove duplicates of an array by using js reduce function
		how to remove duplicates of an array by using js reduce function ??? arr = ["a", ["b& ... 
- js currying All In One
		js currying All In One 柯里化 refs https://juejin.im/post/6844903603266650125 xgqfrms 2012-2020 www.cnb ... 
随机推荐
- sql 括号
			<select id="chlTransQueryByChlType" parameterType="map" resultType="java ... 
- REST以及RESTful
			java作为一门后端语言,其厉害之处在于web,大家比较熟知的各种网络应用,java都能做,那么在这个移动优先的时代,如何继续发挥java的强大呢.通常是让java作为一个app的服务端,为app客户 ... 
- python ---strip()方法,split()方法,删除字符串开头或结尾,字符串分隔
			本文介绍了strip()方法,split()方法, 字典的按键值访问的方法, 1.Python strip() 方法用于移除字符串头尾指定的字符(默认为空格)或字符序列. 注意:该方法只能删除开头或是 ... 
- HTML5 初学者一步一步攀爬 努力加油学习
			Html 5 Html:Hyper Text MarKup Language超文本标签语言 Html:网页的源码 浏览器:"解释和执行"HTMl源码的工具 Head 标签内的信息用 ... 
- html输入框输入显示剩余字数
			效果图 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3 ... 
- Java 复习整理day09
			package com.it.demo01_thread; /* 案例: 多线程简介. 概述: 指的是进程有多条执行路径, 统称叫: 多线程. 进程: 指的是可执行程序, 文件(例如: .exe) 大 ... 
- 真正云原生的智能运维体系,阿里云发布ECS自动化运维套件
			云计算的发展,推动了自动化运维.DevOps.AIOps 等趋势的兴起,在业务快速变化的今天,企业希望通过一套自动化运维的专家系统提高运维效率,为业务提供支撑. 传统的方式下,打造一套成熟的 DevO ... 
- 【HTB系列】靶机Frolic的渗透测试详解
			出品|MS08067实验室(www.ms08067.com) 本文作者:大方子(Ms08067实验室核心成员) Hack The Box是一个CTF挑战靶机平台,在线渗透测试平台.它能帮助你提升渗透测 ... 
- HDU6311 Cover【欧拉路径 | 回路】
			HDU6311 Cover 题意: 给出\(N\)个点的简单无向图,不一定联通,现在要用最少的路径去覆盖所有边,并且每条边只被覆盖一次,问最少路径覆盖数和各条路径 \(N\le 10^5\) 题解: ... 
- 【51nod1674】区间的价值 V2(算法效率--位运算合并优化+链表实现)
			题目链接: 51nod1674 题意:规定一个区间的价值为这个区间中所有数and起来的值与这个区间所有数or起来的值的乘积.现在l有一个 N 个数的序列,问所有n*(n+1)/2个区间的贡献的和对1 ... 
