根据 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
后键入的所有代码都在同一个范围内,这与声明和运行多个模块不同,因此您没有重现我们可以在此处提供帮助的错误。