全局变量或Node.js中的引用调用?

时间:2017-02-24 15:35:20

标签: javascript node.js

在Node.js中,我有这样的代码:

//file main.js
var otherfile = require('other.js');
var myname = 'aaa';
otherfile.setname();

现在,我想更改myname变量而不将此变量作为参数发送。

//file other.js
module.exports = {
    setname: function(){
        myname = 'bbb';
    }
}

我可以这样做吗?我是否必须通过参考使用呼叫?或者使用全局变量?

1 个答案:

答案 0 :(得分:1)

即使您将此变量作为参数传递,也无法更改此变量,因为您只会按值传递'aaa'字符串,而不是绑定实际变量。并且您无法从另一个文件访问此变量,因为它将超出范围。

您可以做的是传递在该范围内具有此变量的闭包

//file main.js
var otherfile = require('./other.js');
var myname = 'aaa';
function changeValue(value) {
  myname = value;
}
console.log(myname);
otherfile.setname(changeValue);
console.log(myname);

//file other.js
module.exports = {
    setname: function (fn) {
        fn('bbb');
    }
}