首页 > 代码库 > 柯里化(Curing)
柯里化(Curing)
柯里化:把接受多个参数的函数变换成接受单个参数的函数,并且返回准备接受余下参数,还能返回结果的一种技术。
1 function currying(fn){ 2 var args = Array.prototype.slice.call(arguments, 1); 3 4 return function(){ 5 var innerArgs = Array.prototype.slice.call(arguments); 6 var finnalArgs = args.concat(innerArgs); 7 8 return fn.apply(null, finnalArgs); 9 }10 11 }12 13 function add(num1, num2){14 return num1 + num2;15 }16 17 var curriedAdd = currying(add, 2);18 console.log(curriedAdd(3)); //5
使用柯里化,我们实现一个数字累加的例子:
1 function currying(fn) { 2 var _store = []; 3 4 return function () { 5 if (!arguments.length) { 6 return fn.apply(null, _store); 7 } else { 8 _store = _store.concat(Array.prototype.slice.call(arguments)); 9 }10 }11 12 }13 14 function sum() {15 var total = 0;16 for (var i = 0, len = arguments.length; i < len; i++) {17 total += arguments[i];18 }19 return total;20 }21 22 var addNum = currying(sum);23 24 addNum(1);25 addNum(2);26 addNum(3, 4);2728 console.log(addNum()); //10
在多参数的函数中,如果我们想固定其中的一些参数,我们就可以使用函数的柯里化特性。预先将函数的某些参数传入,得到一个简单的函数,预先传入的参数则被保存在闭包中。
柯里化(Curing)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。