function getSum(a, b, c) {
return a + b + c;
}
function curry(fn) {
return function curryFn(...args) {
console.log(fn.length);
if (args.length < fn.length) {
return function() {
console.log('arguments===', args.concat(Array.from(arguments)))
return curryFn(...args.concat(Array.from(arguments)));
}
}
return fn(...args);
}
}
let curryGetSum = curry(getSum);
console.log(curryGetSum(1, 2, 3));
console.log(curryGetSum(1)(2, 3));
console.log(curryGetSum(1)(2)(3));
函数柯里化
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 1.0 非受控组件 2.0 受控组件 等同于vue中的数据双向绑定。 3.0 高阶函数 高阶函数:如果一个函数符合...
- 一、什么是柯里化? 我们先来看看维基百科中是如何定义的:在计算机科学中,柯里化(英语:Currying),又译为卡...
- 高阶函数的定义 在《javascript设计模式和开发实践》中是这样定义的。 函数可以作为参数被传递; 函数可以作...
- 函数式编程与面向对象编程[1]: Lambda表达式 函数柯里化 高阶函数.md 之剑 2016.5.2 11:1...