You may know the global
object in Node.js:
{Object} The global namespace object.
In browsers, the top-level scope is the global scope. That means that in browsers if you're in the global scope var something will define a global variable. In Node this is different. The top-level scope is not the global scope; var something inside a Node module will be local to that module.
Now I stumbled over the root
object which seems to be documented nowhere.
Though it seems that I can use root
the same way as global
:
test1.js
foo = 'bar'; // foo is defined in the global scope (no var in front of foo)
test2.js
require('./test1.js');
console.log(root.foo);
In the shell:
$ node test2.js
bar
When I inspect global
and root
in the shell they look the same. Try:
$ node
> global
...
> root
...
So it seems that root
is the same as global
. But why the redundancy? Why is root
not documented? Is it deprecated?
It is exactly the same as
global
.There are a few undocumented properties like this. They date from early days of node but were left in to maintain backwards-compatibility and there is no pressing need to remove them.
You shouldn't use them in any new code, as they could be removed at any future time.