我对以下示例中的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);
输出:[]
答案 0 :(得分:0)
对于a,你总是指代数组的同一个实例。对于b,重新分配arrayVar会创建数组对象的新实例,这与导出中传递的实例不同。
如果需要重新初始化数组,请使用splice方法,或将长度设置为0,但要确保使用相同的对象