Javascript Closure
This is a special thing we can do with Javascript Functions.
A Javascript function can reference an external variable on the fly. Like this:
var NAMEfirst = "Fred";
setTimeout(function(){
console.log("Call " + NAMEfirst);
}, 1000);
This is described as creating a “Closure”.
It is a very important technique in Javascript programming.
Lua also has closures as a core part of the language.
See this article pointing out trouble with closures in the context of a for loop.
See Wikipedia for more information on what a closure is.