函数柯里化简单理解

function add(a,b) { return a + b }   
add(1, 2) => 3
// 对于以上函数如果使用柯里化可以这样改造
function add(a) {
    return b => {
        return a + b
    }
}
add(1)(2) => 3
// 你可以这样理解函数柯里化,通过闭包保存了外部的一个变量,然后返回一个接收参数的函数,在该函数中使用了保存的变量,然后再返回值。

封装一个cont方法,能实现如此调用:函数柯里化
cout(a)(b)©(d)(e)… 并且返回的值为参数连剩的结果,即abcde*…。如cout(1)(3)(7)

 init=0;  //设置一个全局变量
 var muti=function(m)
 {
    init=init*m;
    return muti
  }
  muti.toString=function()  //这是关键的一步
  {
     return init;
  }
  function count(m)  //最终我们要调用的函数
  {
     init=m ;// 初始化,否则init是0,那么永远乘 都是 0,也是很关键的一步
     return muti;//最终返回的是 元对象(不是实例化过后的对象哦)
  }
  alert(count(3)(4)(5))

猜你喜欢

转载自blog.csdn.net/jbguo/article/details/84636198