欢迎使用Markdown编辑器写博客
题目
补充函数实现代码,使下方调用结果均为6。
function sum(a,b,c){
/* TO DO */
}
function currying(fn){
/* TO DO */
}
var curry = currying(sum);
console.log(currying(sum,1,2,3));
console.log(curry(1)(2)(3));
console.log(curry(1,2)(3));
console.log(curry()(1)(2)(3));
console.log(curry(1,2,3));
参考代码
function sum(a,b,c){
return a+b+c;
}
function currying(fn){
var slice = Array.prototype.slice;
var len = fn.length;
var arg = slice.call(arguments,1);
if(typeof fn !== "function")return ;
function cry(arg){
if(arg.length==len){
return fn.apply(this,arg);
}else{
return function (){
var args = arg.concat(slice.call(arguments));
if(args.length<len)return cry(args);
return fn.apply(this,args);
}
}
}
return cry(arg);
}
var curry = currying(sum);
console.log(currying(sum,1,2,3));
console.log(curry(1)(2)(3));
console.log(curry(1,2)(3));
console.log(curry()(1)(2)(3));
console.log(curry(1,2,3));
结果图