在节点js中的多个文件之间共享变量

时间:2018-01-31 18:33:04

标签: javascript

index.js中的

let a=[];

const ab = function(){
a.push(1);
 console.log("b",a);}
module.exports = {
a:a,
ab:ab
};
# 在main.js中

var lo = require("./a")
console.log(lo.a);
lo.ab();
console.log(lo.a);

当我运行main.js时,第一个console.log在空数组中,但第二个console.log是[1]。我的问题是,当我们导入时,它在index.js中被引用,或者它会在index.js中给出一个副本

如果我稍微将index.js更改为

let a=[];

const ab = function(){
a=[];
a.push(1);
console.log("b",a);}
module.exports = {
a:a,
ab:ab
};

然后输出是[]和[]。

为什么会有差异?

2 个答案:

答案 0 :(得分:0)

“a”将通过引用公开给您的消费者模块。查看https://nodejs.org/api/modules.html#modules_caching了解详情。

答案 1 :(得分:0)

是。导入时,' a'被称为' a'在index.js中。在javascript中,除了原语之外,变量总是通过引用传递。在这种情况下,a是一个数组。因此,将引用相同的对象。

相关问题