Open winniyoung opened 6 years ago
(1)函数利用闭包实现将数据记录在内存中 (2)示例代码:
// 利用闭包,构造一个记忆函数 var add = function(num1){ return function(num2){ return num1 + num2; } }; // ES6写法 // var add = num1 => (num2 => num1 + num2); // 返回一个function,将num1赋值为10,存在存储中 var add10 = add(10); // 输出30 console.log(add10(20));
(1)在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。 (2)事实上柯里化是一种“预加载”函数的方法,通过传递较少的参数,得到一个已经记住了这些参数的新函数,某种意义上讲,这是一种对参数的“缓存”,是一种非常高效的编写函数的方法 (3)将函数柯里化示例:
// ES5 function curry(fn) { function _c(restNum, argsList) { return restNum === 0 ? // fn.apply(null, argsList) fn.apply(null, argsList) : function(x) { return _c(restNum - 1, argsList.concat(x)); }; } return _c(fn.length, []); } // 使用 var plus = curry(function(a, b) { return a + b; }); // 3 console.log(plus(1)(2));
参考:https://muyiy.cn/blog/6/6.2.html#%E6%9F%AF%E9%87%8C%E5%8C%96
1、函数的记忆功能,可以缓存数据,优化代码执行性能,常常在递归方法里面使用
(1)函数利用闭包实现将数据记录在内存中
(2)示例代码:
2、函数的柯理化
(1)在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。
(2)事实上柯里化是一种“预加载”函数的方法,通过传递较少的参数,得到一个已经记住了这些参数的新函数,某种意义上讲,这是一种对参数的“缓存”,是一种非常高效的编写函数的方法
(3)将函数柯里化示例: