js 柯里化函数
2016-06-23 16:16
211 查看
柯里化,听起来有点像数学名词,但是它确实和数学的数列有想象之处
直观的表现:柯里化最直观的表现就是把一个需要传入多个参数的函数变成多个嵌套的只要传入一个参数的函数
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
总结:柯里化是一种编程艺术,或者说是一种技巧,并非是一定要使用才能实现某个功能的技术,总而言之,柯里化就是使用了组件化的思想来处理函数多个参数的情况,从而提高代码的可阅读性以及可维护性
直观的表现:柯里化最直观的表现就是把一个需要传入多个参数的函数变成多个嵌套的只要传入一个参数的函数
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
总结:柯里化是一种编程艺术,或者说是一种技巧,并非是一定要使用才能实现某个功能的技术,总而言之,柯里化就是使用了组件化的思想来处理函数多个参数的情况,从而提高代码的可阅读性以及可维护性
相关文章推荐
- Extjs4.0 最新最全视频教程
- Javascript中toFixed方法的改进
- 5个常见可用性错误和解决方案
- js数组实现图片轮播
- Mootools 1.2教程 函数
- autoit InputBox 函数
- 文件遍历排序函数
- js可突破windows弹退效果代码
- 关于C#中排序函数的总结
- Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
- JSP脚本漏洞面面观
- ASP下经常用的字符串等函数参考资料
- PostgreSQL教程(五):函数和操作符详解(1)
- DOS批处理 函数定义与用法
- asp Chr 函数 数字转字母的方法
- 使用BAT一句话命令实现快速合并JS、CSS
- Lua中的函数精讲笔记
- Lua中的闭合函数、非全局函数与函数的尾调用详解
- Lua中调用C++函数示例
- Lua实现split函数