Javascript 为什么文件中未定义global.module,但在节点REPL中它是全局上的对象?
如果我: 在foo.js文件中,并使用以下命令执行:Javascript 为什么文件中未定义global.module,但在节点REPL中它是全局上的对象?,javascript,node.js,Javascript,Node.js,如果我: 在foo.js文件中,并使用以下命令执行: console.log(global.module); 它的输出未定义。但是,如果在启动节点REPL时访问全局对象上的相同属性,则它是一个对象。get作为参数传递给模块包装函数module的同一个实际对象 为什么它不在全局对象上的文件中,而在REPL中?在模块文件的上下文中,module不是全局变量,实际上是局部变量。在执行之前,节点模块代码实际上是这样包装的: node foo.js 所有这些变量对于每个模块都必须是唯一的,因此它们不能
console.log(global.module);
它的输出未定义。但是,如果在启动节点REPL时访问全局对象上的相同属性,则它是一个对象。get作为参数传递给模块包装函数module的同一个实际对象
为什么它不在全局对象上的文件中,而在REPL中?在模块文件的上下文中,
module
不是全局变量,实际上是局部变量。在执行之前,节点模块代码实际上是这样包装的:
node foo.js
所有这些变量对于每个模块都必须是唯一的,因此它们不能是全局变量
但是,在REPL和其他在全局范围内进行求值的代码中,这些变量被添加为全局对象的属性,因此您仍然可以使用诸如require
之类的内容
(function (exports, require, module, __filename, __dirname) {