节点全局是跨模块对象吗?



根据 Node 文档,顶级作用域不是全局作用域,在 Node.js 模块中定义的变量将是该模块的本地变量。
但是,我注意到在全局范围内创建的var something被列为global的属性,对我来说似乎是一种跨模块对象。 这是我在 GitBash 中运行的代码:

$ node
var something = "this is a test"
undefined
something
'this is a test'
console.log(global)

我真的不明白这如何与文档中有关顶级范围的内容相协调。

如果global真的是一个跨模块对象,正如 Ebohlman 对这个老问题的回答所暗示的那样,那么var something不是它定义的模块的本地对象。

有人可以帮我澄清一下这件事吗?var something真的是模块范围的吗?global与 JavaScript 中的window有何不同?它的目的是什么?

您在 REPL 中运行了代码,这意味着您在运行node后键入的所有代码都在同一个范围内,这与声明和运行多个模块不同,因此您没有重现我们可以在此处提供帮助的错误。

最新更新