obj.js
var S
function init(value) {
S = {
s: value
}
}
module.exports = {
S: S,
init: init
}
index.js
var obj = require('./obj')
obj.init('Hi')
console.log("index.js: " + obj.S)
结果:
node index.js
index.js: undefined // 为什么呢,明明已经初始化了
=====================================
参考此文换一种方式:
https://www.yangyang.cloud/blog/2016/06/28/nodejs-circular-dependencies/
obj.js
const Module = module.exports;
var S
function init(value) {
S = {
s: value
}
}
Module.S = S
Module.init = init
index.js
var obj = require('./obj')
obj.init('Hi')
console.log("index.js: " + obj.S)
结果:
node index.js
index.js: undefined // 为什么呢,明明已经初始化了
=====================================
obj.js
class C {
constructor() {
this.S = null
}
init(value) {
this.S = { s: value }
}
}
var obj = new C()
obj.init('Hello')
console.log(obj.S.s)
module.exports = obj
index.js
var obj = require('./obj')
obj.init('Hi')
console.log("index.js: " + obj.S.s)
结果:
node index.js
obj.js: Hello
index.js: Hi // 全局变量修改成功
看来全局变量必须明确为引用型才可以被改变