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
};
然后输出是[]和[]。
为什么会有差异?
答案 0 :(得分:0)
“a”将通过引用公开给您的消费者模块。查看https://nodejs.org/api/modules.html#modules_caching了解详情。
答案 1 :(得分:0)
是。导入时,' a'被称为' a'在index.js中。在javascript中,除了原语之外,变量总是通过引用传递。在这种情况下,a是一个数组。因此,将引用相同的对象。