Node.js中的根对象是什么

bor*_*kur 16 javascript global node.js

您可能知道Node.js中的global对象:

{Object}全局命名空间对象.

在浏览器中,顶级范围是全局范围.这意味着在浏览器中,如果您在全局范围内,var会定义一个全局变量.在Node中,这是不同的.顶级范围不是全球范围; Node模块内的var something将是该模块的本地内容.

现在我偶然发现了root似乎没有记录的物体.

虽然我似乎可以使用root相同的方式global:

test1.js

foo = 'bar'; // foo is defined in the global scope (no var in front of foo)
Run Code Online (Sandbox Code Playgroud)

test2.js

require('./test1.js');
console.log(root.foo);
Run Code Online (Sandbox Code Playgroud)

在shell中:

$ node test2.js
bar
Run Code Online (Sandbox Code Playgroud)

当我检查globalroot在外壳中它们看起来一样.尝试:

$ node
> global
...
> root
...
Run Code Online (Sandbox Code Playgroud)

所以它似乎root是一样的global.但为什么冗员呢?为什么root没有记录?它被弃用了吗?

Sto*_*ica 14

它完全一样global.

有一些这样的未记录的属性.它们可以从节点的早期开始,但是保留了它们以保持向后兼容性,并且没有迫切需要将它们删除.

您不应该在任何新代码中使用它们,因为它们可能在将来被删除.