What is the root object in Node.js
global, javascript, node.js
Solution
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.
Problem
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?