мне понравилось эта реализация:
function sum() {
var res;
sum.res = sum.res || 0;
sum.arg = sum.arg || 0;
sum.arg += arguments.length;
for (var i = 0; i < arguments.length; i++) sum.res += arguments[i];
if(sum.arg == 3){
res = sum.res;
sum.arg = sum.res = 0;
}else{
res = sum;
}
return res;
}
Когда функция в свой объекте хранит свое состояние и в зависимости от него реагирует - возвращать ли функцию или переменную. Вот только это реализуемо если мы знаем возможные комбинации вызова, а как бы такую штуку реализовать на всевозможные комбинации вызова?