well, functions close over scope no matter what you call them.
if your function doesn't return another function, the references from that function are deallocated once the function has executed.
when your function returns a function (a "closure"), the inner function closes over the variables of the outer function, maintaining references to it's context as long as you maintain a reference to the closure.