【发布时间】:2018-09-08 19:02:00
【问题描述】:
根据 Node documentation,顶级作用域不是全局作用域,在 Node.js 模块中定义的变量将是该模块的本地变量。
但是,我注意到在全局范围内创建的var something 被列为global 的属性,对我来说这似乎是一种跨模块对象。
这是我在 GitBash 中运行的代码:
$ node
var something = "this is a test"
undefined
something
'this is a test'
console.log(global)
我真的不明白这与文档中关于顶级范围的说明如何一致。
如果 global 真的是一个跨模块对象,正如 Ebohlman 对 this old question 的回答似乎暗示的那样,那么 var something 不是它所定义的模块的本地对象。
有人可以帮我解释一下这个问题吗? var something 真的是模块范围的吗? global 与 JavaScript 中的 window 有何不同?它的目的是什么?
【问题讨论】:
-
module 的顶级范围不是全局范围,是的。你在哪里放置和运行你的
var something? -
@Bergi 感谢您回复我。我用 GitBash 运行它。
-
你的意思是你运行
node启动节点REPL然后输入var something? -
@Bergi 正是如此。我编辑了我的问题,添加了我运行的代码的 sn-p。
-
看看this。您阅读的文档不准确,它们应声明“顶级范围模块(脚本文件)不是全局范围”。另见nodejs.org/api/repl.html 和nodejs.org/api/modules.html
标签: javascript node.js