ok, just a little recap so I am perfectly clear, and a more practical example:
(function(){ var mark = function(foo){ var far = foo + 3; if(far < 10){...} }; wade = function(boo){ bar = boo + 3; if(bar < 10){...} delete bar; }; })(); if I am understanding correctly you are saying that 'wade' and 'bar' would both be global variables in this instance. Also that 'far' would be automatically cleaned up by the engine after any call to 'mark' returns. Is this correct? And to take this to an extreme: (function(){ var com = function(){ return { mark: function(foo){ var far = foo + 3; if(far < 10){...} }, wade: function(boo){ bar = boo + 3; if(bar < 10){...} delete bar; } } }(); })(); Is 'bar' still global? -wade