如果重新初始化,module.export.variable总是一个空对象

时间:2017-06-12 21:04:08

标签: javascript node.js

我对以下示例中的module.exports功能感到困惑。在第一种情况下,b.js中的a.arrayVar正确地给出了在运行时在a.js中添加到数组中的所有元素,但在情况2中也没有发生。但两种情况的唯一区别在案例2中,arrayVar是在函数中重新初始化的。我有一个用例,每次动态更新数组时都必须重新初始化,我发现很难实现这种情况。非常感谢我理解这个概念的任何帮助。

案例1:

// a.js
var arrayVar= [];
module.exports.arrayVar= arrayVar;

function test(element){
arrayVar.push(element);
}


// b.js
var a= require('./a.js');
console.log(a.arrayVar);

输出:[' kafka-topic-1',' kafka-topic1' ]

案例2:

// a.js
var arrayVar= [];
module.exports.arrayVar= arrayVar;

function test(element){
 arrayVar= [];
 arrayVar.push(element);
}

// b.js
var a= require('./a.js');
console.log(a.arrayVar);

输出:[]

1 个答案:

答案 0 :(得分:0)

对于a,你总是指代数组的同一个实例。对于b,重新分配arrayVar会创建数组对象的新实例,这与导出中传递的实例不同。

如果需要重新初始化数组,请使用splice方法,或将长度设置为0,但要确保使用相同的对象