×

函数柯里化,你有了解过吗?

作者:cidy20172019.04.25来源:Web前端之家浏览:7949评论:0
关键词:js函数柯里化

函数柯里化,你有了解过吗?估计很多会蒙,尤其是对于新手。其实不难,简单介绍下。

函数柯里化是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。弄个简单例子来玩玩,实现 sum(1)(2)(3) 返回结果是1,2,3之和。如下:

  1. function sum(a) {
  2.     return function(b) {
  3.         return function(c) {
  4.             return a+b+c;
  5.         }
  6.     }
  7. }
  8. console.log(sum(1)(2)(3)); // 6

引申:实现一个curry函数,将普通函数进行柯里化:

  1. function curry(fn, args = []) {
  2.     return function(){
  3.         let rest = [...args, ...arguments];
  4.         if (rest.length < fn.length) {
  5.             return curry.call(this,fn,rest);
  6.         }else{
  7.             return fn.apply(this,rest);
  8.         }
  9.     }
  10. }
  11. //test
  12. function sum(a,b,c) {
  13.     return a+b+c;
  14. }
  15. let sumFn = curry(sum);
  16. console.log(sumFn(1)(2)(3)); //6
  17. console.log(sumFn(1)(2, 3)); //6

您的支持是我们创作的动力!
温馨提示:本文作者系 ,经Web前端之家编辑修改或补充,转载请注明出处和本文链接:
https://jiangweishan.com/article/js1823129fpsifpiipi.html

网友评论文明上网理性发言 已有0人参与

发表评论: