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))