Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么文件中未定义global.module,但在节点REPL中它是全局上的对象?_Javascript_Node.js - Fatal编程技术网

Javascript 为什么文件中未定义global.module,但在节点REPL中它是全局上的对象?

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

如果我:

在foo.js文件中,并使用以下命令执行:

console.log(global.module);
它的输出未定义。但是,如果在启动节点REPL时访问全局对象上的相同属性,则它是一个对象。get作为参数传递给模块包装函数module的同一个实际对象


为什么它不在全局对象上的文件中,而在REPL中?

在模块文件的上下文中,
module
不是全局变量,实际上是局部变量。在执行之前,节点模块代码实际上是这样包装的:

node foo.js
所有这些变量对于每个模块都必须是唯一的,因此它们不能是全局变量

但是,在REPL和其他在全局范围内进行求值的代码中,这些变量被添加为全局对象的属性,因此您仍然可以使用诸如
require
之类的内容

(function (exports, require, module, __filename, __dirname) {