1. A function inside another function, a closure is used.
3. It is probably best to think that a closure is always created just an entry to a function, and the local variables are added to that closure.
4. A new set of local variables is kept every time a function with a closure is called (given that the function contains a function declaration inside it, and a reference to that inside function is either returned or an external reference is kept for it in some way).
if a function reference has a closure or not.
6. If you are trying to do any dynamic source code modifications (for example: myFunction = Function(myFunction.toString().replace(/Hello/,’Hola’));), it won’t work if myFunction is a closure (of course, you would never even think of doing source code string substitution at runtime, but…).
7. It is possible to get function declarations within function declarations within functions — and you can get closures at more than one level.
8. I think normally a closure is the term for both the function along with the variables that are captured. Note that I do not use that definition in this article!