Javascript 在Node.js中,为什么使用require函数的模块之间的变量相等?
我在同一目录中有以下文件: data.js mod1.js mod2.js main.jsJavascript 在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 //
当我做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