柯里化辅助函数的实现
【柯里化辅助函数的实现】最近看 javascript设计模式与开发实战 里面有个通用的柯里辅助函数的实现,觉得不错,记录一下
//对fn进行柯里化
var curring = function(fn) {
var args = [];
//记录调用过程中的args
//为了要返回function呢? 因为要把args fn进行闭包保留
return function() {
if (arguments.length === 0) {
return fn.apply(this, args);
} else {
[].push.apply(args, arguments);
return arguments.callee;
//返回当前调用函数
}
}
}var cost = function() {
var money = 0;
for (var i = 0;
i < arguments.length;
i++) {
money += arguments[i]
}
return money;
}//转为curry
cost1 = curring(cost);
cost1(100);
cost1(200);
cost1(300);
console.log(cost1());
cost2 = curring(cost);
console.log(cost2(100)(200)(300)());
tips: arguments.callee 是返回当前调用的函数,比如即含有当前arguments的函数
推荐阅读
- parallels|parallels desktop 解决网络初始化失败问题
- 第326天
- 牛人进化+|牛人进化+ 按自己的意愿过一生
- MongoDB,Wondows下免安装版|MongoDB,Wondows下免安装版 (简化版操作)
- 松软可口易消化,无需烤箱超简单,新手麻麻也能轻松成功~
- 为什么孩子一定要学会可视化思维!
- 试论化院的学生自组织
- 【变化】我的青椒学习之旅
- 中国MES系统软件随工业化成长
- 私有化轻量级持续集成部署方案--03-部署web服务(下)