Глобальная переменная Node.JS, объявляющая, когда local имеет то же имя - PullRequest
0 голосов
/ 22 октября 2018

У меня есть этот код:

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

Это возможно дублировать, но каждый раз, когда я видел это, решением было использовать window.manager = manager для установки глобальной переменной изнутри функции.Как это сделать в Node.JS, где нет window?this.manager не работает, потому что кажется this.manager! == manager (глобальный)

1 Ответ

0 голосов
/ 22 октября 2018

В этом случае ваш параметр функции скрывает локальную переменную.

Рассмотрим следующие 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;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...