A closure is a function with its own private environment. The environment's bindings may not be used or modified-except by the associated function. The environment is used to define the values of free variables (variables in the function body which are not in the variable list).
Creating and using closure
We'll define a function ADDER which given a number-say 1.
It returns a new function which remembers the given number. This new function is the closure.