А рабоче-крестьянский вариант засчитывается?
var sum = function() {
var args = arguments,
lenArgs = args.length;
if (lenArgs == 3) return args[0] + args[1] + args[2];
if (lenArgs == 2) {
return function(c) { return args[0] + args[1] + c; }
}
if (lenArgs == 1) {
return function() {
if (arguments.length == 1){
var b = arguments[0];
return function(c) { return args[0] + b + c; }
} else {
return args[0] + arguments[0] + arguments[1];
}
}
}
}
alert( 'sum(2, 5, 10) = ' + sum(2, 5, 10) + "\n"
+ 'sum(2, 5)(10) = ' + sum(2, 5)(10) + "\n"
+ 'sum(2)(5)(10) = ' + sum(2)(5)(10) + "\n"
+ 'sum(2)(5, 10) = ' + sum(2)(5, 10));