可以在没有文件的情况下在两个函数之间共享全局变量吗?

Possible to share global variable between two functions without a file?

使用下面的代码,我得到

{ test1: 'aaa', test2: 'bbb' }

这就是我想要的。 IE。能够在 t2.jst3.js 之间有一个全局变量。

在这个 PoC 中 t3() 只被调用一次,但在实际情况下,如果 t3() 的 ~100 个实例永远不会结束,因为它们在无限循环中收集数据。 t2.js 不需要修改 c.

问题

是否可以相同,但没有第三个文件(在这种情况下为t1.js)?

t1.js

module.exports = {};

t2.js

const express = require('express');
const app = express();

let c = require('./t1');
const t3 = require('./t3');

c.test1 = "aaa";
t3();
console.log(c);

app.get('/test.json', (req, res) => {
  res.send(JSON.stringify(c, null, 2));
});    

app.listen(1900, () => {});

t3.js

let c = require('./t1');
module.exports = () => {
  c.test2 = "bbb";
};

看起来很简单,可以在入口点创建一个对象,然后传递它:

const express = require('express');
const app = express();

const t3 = require('./t3');

const records = {
  test1: "aaa",
};
t3(records);
console.log(records);

app.get('/test.json', (req, res) => {
  res.send(JSON.stringify(records, null, 2));
});    

app.listen(1900, () => {});
module.exports = (records) => {
  records.test2 = "bbb";
};

请注意,无论是在这段代码中还是在您的原始代码中,都没有使用全局变量(我想 require 除外)。