function foo(a, b) { var one = a, two = b; return function (a, b) { return (one = a || one) + (two = b || two); } } var test = foo(1, 7); alert(test());//8 alert(test(2, 3)); //5 alert(test())//5