Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.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 在Node.js中,为什么使用require函数的模块之间的变量相等?_Javascript_Node.js_Web_Module - Fatal编程技术网

Javascript 在Node.js中,为什么使用require函数的模块之间的变量相等?

Javascript 在Node.js中,为什么使用require函数的模块之间的变量相等?,javascript,node.js,web,module,Javascript,Node.js,Web,Module,我在同一目录中有以下文件: data.js mod1.js mod2.js main.js 当我做mod1==mod2时,这是真的,为什么?我最初认为mod1和mod2文件应该包含一个数组,但对数组对象的引用不同。这是因为模块是缓存的。由于您两次引用同一个模块,因此第二个模块返回的结果与第一个模块完全相同。在您的示例中,这与执行以下操作相同: const arr1 = [1,2] const arr2 = [1,2] arr1 === arr1 // true arr1 === arr2 //

我在同一目录中有以下文件:

data.js

mod1.js

mod2.js

main.js


当我做mod1==mod2时,这是真的,为什么?我最初认为mod1和mod2文件应该包含一个数组,但对数组对象的引用不同。

这是因为模块是缓存的。由于您两次引用同一个模块,因此第二个模块返回的结果与第一个模块完全相同。在您的示例中,这与执行以下操作相同:

const arr1 = [1,2]
const arr2 = [1,2]

arr1 === arr1 // true
arr1 === arr2 // false
最后一行为false,因为您正在比较两个不同的数组

var data = require('./data');
module.exports = data;
var data = require('./data');
module.exports = data;
var mod1 = require('./mod1');
var mod2 = require('./mod2');
const arr1 = [1,2]
const arr2 = [1,2]

arr1 === arr1 // true
arr1 === arr2 // false