如何理解currying
的功能?js currying功能示例
newSum
和newFind
如何工作?
var currying = function(fn) {
var args = [];
return function() {
if (!!arguments.length) {
[].push.apply(args, arguments); // What's the meaning of this writing?
return arguments.callee;
} else {
return fn.apply(this, args);
}
}
}
// accumulation currying
var sum = (function(num){
var ret = 0;
return function(){
for(var i = 0, len = arguments.length; i < len; i++) {
ret += arguments[i];
}
return ret;
}
})();
var newSum = currying(sum);
newSum(1)(2)(3)(4)() // 10
// element find currying
var find = function(arr, el){
return arr.indexOf(el) !== -1;
}
var newFind = currying(find)([1,2,3]);
newFind(1);
newFind(2);
你在哪裏得到這個代碼?你究竟有什麼不明白/需要澄清? (在https://stackoverflow.com/q/46742196/6567275後) – Thomas
'[] .push.apply(args,arguments);'基本上'爲(var i = 0; i
Thomas