记得曾经被柯里化函数折磨的不轻,今天没事来重新研究研究。

 先来看看柯里化函数的定义:

 柯里化(Currying)指的是将原来接受两个参数的函数变成新的接受一个参数的函数的过程。新的函数返回一个以原有第二个参数为参数的函数。

 光看定义是不是一脸蒙蔽,其实我也是这样的,举个例子就明白了,先定义一个有两个参数的简单函数
     function sum(a,b){
         return a+b;
     };
 我们来把它柯里化:
     function sum(a){
         return function another(b){
             return a+b;
         }
     }
 那怎么调用呢?

 sum(1)(2);
//3

这有点像闭包呀看到没,其实就是闭包,a 也就成了哪个系统不被回收的变量,这样就可以让another函数随时访问,a适用放一些全局的配置信息。这样就不用每次执行的时候都传入了。