javascriptnode.jsclosures

How to console.log the content of a closure


I would like to see the content of a closure in JavaScript.

In the following code, I would like to see the closure of the function closure_f returned by the anonymous function. The local scope of the anonymous function must be stored somewhere, I would like to see where it is stored. How can this be done in Node or in the browser?

var closure_F = (function(){
var info = "info-string";
var f1 = function(){
    console.log(info);
};
return f1;
}());

closure_F(); // logs 'info-string' as expected.
console.log(closure_F); // This did not provide any valuable information.

Solution

  • The local scope of the anonymous function must be stored somewhere

    That's an implementation detail of the JavaScript runtime. It isn't stored anywhere that is exposed to the JavaScript program.

    How can this be done in Node or in the browser?

    Dedicated debugging tools can inspect the data there. Set a breakpoint on the console.log call.

    Note that optimisations mean that only variables used within the returned function will be visible.