I understand that every function in JavaScript is a first-class object and it has an internal property [[scope]] which hosts the binding records of the function's free variables. However, there are two special cases.
- Is the function created by Function constructor also a closure? The function object created by Function constructor is special, because its [[scope]] may not refer to the lexical environments of its outer functions, but only the global context. For example, - var a = 1; var fn = (function outer() { var a = 2; var inner = new Function('alert(a); '); return inner; })(); fn(); // will alert 1, not 2.- This is unintuitive. Is this also called closure? 
- If an inner function doesn't have any free variables, can we say a closure is formed when the inner function is created? For example, - // This is a useless case only for academic study var fn = (function outer() { var localVar1 = 1, localVar2 = 2; return function() {}; })();- In this case, fn refers to an empty function object which was created as an inner function. It has no free variables. In this case can we say a closure is formed? 
 
     
     
    