您可能知道Node.js中的global对象:
global
{Object}全局名称空间对象。 在浏览器中,顶级范围是全局范围。这意味着在浏览器中,如果您位于全局作用域var中,则将定义一个全局变量。在Node中,这是不同的。顶级范围不是全局范围;var Node模块内部的某些内容对于该模块而言是本地的。
{Object}全局名称空间对象。
在浏览器中,顶级范围是全局范围。这意味着在浏览器中,如果您位于全局作用域var中,则将定义一个全局变量。在Node中,这是不同的。顶级范围不是全局范围;var Node模块内部的某些内容对于该模块而言是本地的。
现在,我偶然发现了root似乎无处记录的物体。
root
尽管似乎我可以使用root与以下方法相同的方法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);
在外壳中:
$ node test2.js bar
当我检查global并root在外壳中时,它们看起来相同。尝试:
$ node > global ... > root ...
因此,似乎root与相同global。但是为什么要冗余呢?为什么root没有记录?是否已弃用?
与完全相同global。
有一些这样的未记录的属性。它们始于节点的早期,但保留它们是为了保持向后兼容,因此无需迫切删除它们。
您不应该在任何新代码中使用它们,因为将来可能会删除它们。