在以下示例中,我对module.exports功能有些困惑。在情况1中,即使在运行时,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);


输出:[]

最佳答案

在a的情况下,您总是引用数组的相同实例。对于b,重新分配arrayVar会创建一个数组对象的新实例,该实例与导出中传递的实例不同。

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

关于javascript - 重新初始化后,module.export.variable始终为空对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44508678/

10-09 22:13