Open Lawguancong opened 3 years ago
多个参数函数 -> 单个参数函数 柯里化又可叫部分求值。一个柯里化的函数接收一些参数,接收了这些参数之后,该函数并不是立即求值,而是继续返回另一个函数,刚才传入的参数在函数形成的闭包中被保存起来,待到函数真正需要求值的时候,之前传入的所有参数都能用于求值。 使用柯里化可以简化主函数的复杂度,提高主函数的自闭性,使代码模块化,减少耦合增强其可维护性,提高功能上的可扩张性、灵活性。可以编写出更加抽象、功能化和高效的代码。
• 和闭包思想类似 • 简洁代码:柯里化应用在较复杂的场景中,有简洁代码,可读性高的优点。 • 参数复用:公共的参数已经通过柯化预置了。 • 延迟执行:柯里化时只是返回一个预置参数的新函数,并没有立刻执行,实际上在满足条件后才会执行。 • 管道式流水线编程:利于使用函数组装管道式的流水线工序,不污染原函数。
function sum(a) { return function(b) { return function(c) { return a+b+c; } } } console.log(sum(1)(2)(3)); // 6 引申:实现一个curry函数,将普通函数进行柯里化: function curry(fn, args = []) { return function(){ let rest = [...args, ...arguments]; if (rest.length < fn.length) { return curry.call(this,fn,rest); }else{ return fn.apply(this,rest); } } } //test function sum(a,b,c) { return a+b+c; } let sumFn = curry(sum); console.log(sumFn(1)(2)(3)); //6 console.log(sumFn(1)(2, 3)); //6
参考链接 https://github.com/mqyqingfeng/Blog/issues/42 https://juejin.cn/post/6844903882208837645 https://www.jianshu.com/p/5e1899fe7d6b
定义
多个参数函数 -> 单个参数函数 柯里化又可叫部分求值。一个柯里化的函数接收一些参数,接收了这些参数之后,该函数并不是立即求值,而是继续返回另一个函数,刚才传入的参数在函数形成的闭包中被保存起来,待到函数真正需要求值的时候,之前传入的所有参数都能用于求值。 使用柯里化可以简化主函数的复杂度,提高主函数的自闭性,使代码模块化,减少耦合增强其可维护性,提高功能上的可扩张性、灵活性。可以编写出更加抽象、功能化和高效的代码。
特点
• 和闭包思想类似 • 简洁代码:柯里化应用在较复杂的场景中,有简洁代码,可读性高的优点。 • 参数复用:公共的参数已经通过柯化预置了。 • 延迟执行:柯里化时只是返回一个预置参数的新函数,并没有立刻执行,实际上在满足条件后才会执行。 • 管道式流水线编程:利于使用函数组装管道式的流水线工序,不污染原函数。
代码
参考链接 https://github.com/mqyqingfeng/Blog/issues/42 https://juejin.cn/post/6844903882208837645 https://www.jianshu.com/p/5e1899fe7d6b