在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';
}
}
我可以这样做吗?我是否必须通过参考使用呼叫?或者使用全局变量?
答案 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');
}
}