从模块内的函数更新全局变量

时间:2016-05-31 16:56:54

标签: javascript node.js

我尝试通过创建具有不同功能的不同模块来组织我的项目。但为了有效,我需要这些函数来更新我的" app.js"文件。

下面的代码应该更新并记录变量" name"一旦我运行" myFunction"位于" custom_module.js"文件。 但我得到的是:

  

Hello undefined

app.js

var name;
var module = require('./custom_module.js');
module.myFunction();
console.log("Hello " + name);

custom_module.js

var myFunction = function(){
    name = "Test"
}

module.exports.myFunction = myFunction;

有谁知道如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

您可以将其附加到全局对象...这是节点中的global和浏览器中的window

// app.js
window.name = 'Foo';

// custom_module.js
var myFunction = function(){
    window.name = "Bar";
}

P.S。不要这样做。共享的全局变量(通常)总是邪恶的。

答案 1 :(得分:1)

目前,您定义的name范围仅在函数内部。您需要将范围移到外面。像

这样的东西

app.js

var module = require('./custom_module.js');
var name = module.myFunction();
console.log("Hello " + name);

custom_module.js

var myFunction = function(){
    return "Test";
}

module.exports.myFunction = myFunction;