在模块node.js中共享变量



我了解导出是如何工作的,但如何在主文件中创建一个变量,然后在模块中使用该变量?我试图将我的"全局"变量传递给模块中的一个函数,但它是作为副本传递的,而不是通过引用传递的,而且由于它是一个数组,我正在传递,这没有什么好处。

例如

# main file
var someObject = {};
var myModule = require('./whatever');
moModule.function_a(someObject);
moModule.function_b(someObject);

即使someObject是它通过复制传递的对象,如果我在function_a或function_b中更改它的值,它在全局范围或我使用它的任何其他模块中都不会更改。

如果修改传递的参数,该参数将在函数外更改。

然而,您可能会认为对象正在被复制,因为您正在重新分配变量。

你应该做什么:

function foo(a) {
  a.bar = 42;
}
var o = {};
foo(o);
console.log(o); // { bar: 42 }

不要做什么:

function foo(a) {
  a = { bar: 42 };
}
var o = {};
foo(o);
console.log(o); // {}

最新更新