Node.JS全局变量声明本地名称是否相同

时间:2018-10-22 10:31:26

标签: javascript node.js global-variables

我有此代码:

let manager;
exports.setup = async manager => {
    this.manager = manager;
};

这可能是重复的,但是每次我看到这个时,解决方案都是使用window.manager = manager从内部函数设置全局变量。如何在没有window的Node.JS中执行此操作? this.manager不起作用,因为它似乎this.manager!== manager(全局值)

1 个答案:

答案 0 :(得分:0)

在这种情况下,您的函数参数会隐藏局部变量。

请考虑以下2个模块:

lib.js

let manager = 2;
exports.setup = async manager => {
    this.manager = manager;
};

main.js

var v = require("./lib.js");
v.setup(5);
console.log(v.manager);

这将打印5,因为manager是您传递给函数的参数。如果要获取本地manager(在此示例中为2)的值,则需要更改功能参数的名称或将其完全删除。

let manager = 2;
exports.setup = async input => {
    this.manager = manager;
};

let manager = 2;
exports.setup = async () => {
    this.manager = manager;
};