柯里化,听起来有点像数学名词,但是它确实和数学的数列有想象之处
直观的表现:柯里化最直观的表现就是把一个需要传入多个参数的函数变成多个嵌套的只要传入一个参数的函数
var add=function(x,y){
return x+y;
}
柯里化成这样:
var addCurried=function(x){
return function(y){
return x+y;
}
}
addCurried(1)(2);//3
如果是多个参数就会有多层嵌套,相当于把一个函数拆分成多个部分,通过组合得到完整的函数,其实柯里化和前端框架的组件思想相同,都是模块化思想。
来一个四个参数的例子:
var test=function(a,b,c,d){
console.log(a+b+c+d);
}
柯里化后:
var testCurried=function(a){
return function(b){
return function(c){
return function(d){
console.log(a+b+c+d);//这里写的是逻辑代码,我这里用打印代替
}
}
}
}
var testa=testCurried(1);
var testb=testCurried(2);
var testc=testCurried(3);
var testd=testCurried(4);// 10
感觉上面这样好死板有木有?万一我只想控制最后一个参数,前面几个都是固定的,那怎么办?
客官请看:
var testPosition=testCurried(1)(2)(3);
//只控制第四个参数
testPosition(4);//10
testPosition(5);//11
testPosition(6);//12
总结:柯里化是一种编程艺术,或者说是一种技巧,并非是一定要使用才能实现某个功能的技术,总而言之,柯里化就是使用了组件化的思想来处理函数多个参数的情况,从而提高代码的可阅读性以及可维护性