ребята у вас в решениях проблема , если передать 0 он все ломает
function sum () {
var len = 0, sum = 0;
return function fn () {
for(var i = 0, a = arguments; i < a.length && len < 3; i++) (sum+= a[i]*1, a[i] !== '') && (len+=1);
return (len == 3) ? sum : fn;
}.apply(this, [].join.call(arguments, ',').split(','));
}
alert(sum(2, 5, 10)+ "\n"+
sum(2, 5)(10)+ "\n"+
sum(2)(5)(10)+ "\n"+
sum(2)(5, 10)+ "\n"+
sum()(2)(5)(10)+ "\n"+
sum(0)(10)(7));//17