搞不懂的柯里化
封装一个count方法,能实现如此调用:count(a)(b)(c)(d)(e)… 并且返回的值为参数连乘的结果,即abcde*…。如count(1)(3)(7) 得到21
function count(a){ return function(b){ return a*b; } } // count(1)(2) function count(a){ return function(b){ return function(c){ return a*b*c; }; } } // count(1)(2)(4) // 根据规律改进 ,只能做到count(1)(3)(7)()这一步了,能力达不到~~ function count(a){ var cc = function(x){ if(!arguments.length) return a; return count(a*x) } return cc; }
count(1)(3) -- function 3 差一点
function count(x){ var fn = function(y){ return count(x*y); } fn.toString = function(){ return x; }; return fn; } console.log( count(1)(2)(4) ) // function 8 console.log( (count(1)(2)(4)).toString() ); // 8
不懂
柯里化(英语:Currying),又译为卡瑞化或加里化,是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。
- 参数复用 参考链接地址http://www.zhangxinxu.com/wordpress/2013/02/js-currying/ ```javascript function currying(fn) { var slice = Array.prototype.slice, __args = slice.call(arguments, 1); return function() { var __inargs = slice.call(arguments); return fn.apply(null, __args.concat(__inargs)); }; }
var getWife = currying(function() { var allWife = [].slice.call(arguments); console.log(allWife.join(";")); }, "0");
getWife(1, 2, 3, 4, 5) // 0;1;2;3;4;5 ```
相关推荐
81244053 2020-09-23
Kakoola 2020-08-01
wanwanwandj 2020-02-24
ncisoft 2019-11-03
samsai00 2019-10-22
lka0 2019-09-07
RainyX 2019-06-30
81244053 2019-06-28
AlgerFan 2019-06-28
xiaozaq 2019-06-28
关东升 2019-06-20
cewei 2015-11-04
skshenghuo 2017-03-31
jsplijun 2019-05-05
你好C 2018-01-28
稀土 2017-12-12
软件设计 2017-06-02
前端开发 2017-03-22